考虑以下Erlang代码:
-module(testit).
-export([testit/0]).

testit() ->
    Pid = spawn(fun testit_proc/0),Pid ! final,Pid ! one,Pid ! two,io:format("Root finished~n").

testit_proc() ->
    receive
        one     -> io:format("One~n");
        two     -> io:format("Two~n")
    end,receive
        one     -> io:format("One~n");
        two     -> io:format("Two~n")
    end,receive
        one     -> io:format("One~n");
        two     -> io:format("Two~n");
        final   -> io:format("Final~n")
    end,io:format("Spawn finished~n").

输出为:

Root finished
One
Two
Final
Spawn finished

最终消息的处理基本上延迟到最后接收块之前,因为先前的接收模式不匹配该消息.

你怎么用Haskell的TChan这样做?

解决方法

你是指Erlang的选择性接收功能.据我所知,Haskell的STM与此并行.您的选择是重构您的代码以消除对它的需求(例如通过为可能收到的不同类型的信息使用单独的队列)或在库中实现此功能.

选择性接收的语义是除了传入的消息队列之外,还有一个延迟的消息列表.在接收功能中,您需要首先扫描延迟列表以获取任何匹配的消息.如果邮件匹配,则将其从列表中删除并提交.如果没有延迟邮件匹配,则需要等待收件箱中的邮件.当收到消息时,您检查是否匹配.如果是这样,那么你交付它;如果没有,那么你将其推送到延期列表并重复.

如何使Haskell的TChan延迟邮件像Erlang的消息队列?的更多相关文章

  1. 如何在iOS中的电子邮件的HTML正文中嵌入图像

    我正在尝试将图像包含在从iPad发送的HTML电子邮件的正文中.这似乎不可能.我曾尝试使用CID方法,但似乎在iOS中无法获取/设置附件的CID.我也尝试用src=“data:image/png;base64,blahblahblah”嵌入图像.撰写邮件时,它似乎有效,但收到邮件时没有任何内容.有任何想法吗?

  2. ios – UIDocumentInteractionController不显示邮件选项

    对于任何文件,最好指定UTI类型:例:

  3. 用Swift写一个发送邮件的iOS用户反馈

    为了接收用户反馈,很多iOS应用都会在设置页面中,加入发送邮件功能——尤其当应用是由个人开发者开发时。table_view_cel下一步是建立这个TableView的Controller。首先先写个函数,来配置发邮件的视窗。鉴于这种发送邮件的方式,要求用户已经在设备上至少添加有一个邮箱,所以对没有设置邮箱的用户,还应予以提示。到这里,一个调用UITableViewController的iOS邮件反馈就基本写完了。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实

  4. 我的群发邮件程序

    phpinclude"connect.inc.php";if{$query="selectname,emailfromuser";$res=mysql_query;$row=mysql_fetch_array;while{mail($row['email'],$subject,$row['name'].":n".$text."n中国广告网,和你共成长。>群发邮件

  5. php使用pear_smtp发送邮件

    这篇文章主要介绍了php使用pear_smtp发送邮件的相关资料,内容很丰富,感兴趣的小伙伴们可以参考一下

  6. PHP高级编程之消息队列原理与实现方法详解

    这篇文章主要介绍了PHP高级编程之消息队列原理与实现方法,结合实例形式详细分析了PHP消息队列相关概念、原理、使用场景及相关操作注意事项,需要的朋友可以参考下

  7. node.js发送邮件email的方法详解

    这篇文章主要介绍了node.js发送邮件email的方法,结合实例形式详细分析了node.js发送邮件的原理、操作步骤、注意事项及常见问题解决方法,需要的朋友可以参考下

  8. 基于Node.js实现nodemailer邮件发送

    Nodemailer 是一个简单易用的 Node.JS 邮件发送模块(通过 SMTP,sendmail,或者 Amazon SES),支持 unicode,你可以使用任何你喜欢的字符集。Nodemailer是一个简单易用的Node.js邮件发送组件,需要的朋友可以参考下

  9. 一个简单的自动发送邮件系统(二)

    基本上,可以说php是介于后台数据库和前台浏览器的一个中间层,在他们之间传递命令。这种方式大大提高了交互的可能性,可以方便使用在投票系统,其他动态用户输入和个性化网站中。*//*声明一些相关的变量*/$hostname="devshed";$username="myusername";$password="mypassword";$dbName="mydbname";/*使用MySQL建立的数据表存取信息*/$userstable="information";/*网站管理员的邮件地址*/$adminadd

  10. 邮件发送简单例子-bean文件

    SimpleSendMessage.javaimportjava.util.*;importjavax.mail.*;importjavax.mail.internet.*;importjavax.activation.*;publicclassSimpleSendMessage{publicstaticvoidmain(String[]args){//Collectthenecessaryinf

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部