Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# F MailboxProcessor.PostAndReply是否阻止Post?_F#_Mailboxprocessor - Fatal编程技术网

F# F MailboxProcessor.PostAndReply是否阻止Post?

F# F MailboxProcessor.PostAndReply是否阻止Post?,f#,mailboxprocessor,F#,Mailboxprocessor,假设我调用MailboxProcessor.PostAndReply,由于各种原因,它可能会运行很长时间。如果在第一次调用尚未返回时从其他线程调用MailboxProcessor.Post,会发生什么 我的意思是,是的,当然,我可以写一个测试来重现这种情况。然而,在我开始重新发明自行车之前,我想知道是否有人已经知道这个问题的答案 非常感谢 简单的回答是:不,它不会阻塞 较长版本: 邮箱处理器使用常规队列而不是ConcurrentQueue,这意味着post使用一个锁来排队,这意味着如果从两个不同

假设我调用MailboxProcessor.PostAndReply,由于各种原因,它可能会运行很长时间。如果在第一次调用尚未返回时从其他线程调用MailboxProcessor.Post,会发生什么

我的意思是,是的,当然,我可以写一个测试来重现这种情况。然而,在我开始重新发明自行车之前,我想知道是否有人已经知道这个问题的答案


非常感谢

简单的回答是:不,它不会阻塞

较长版本: 邮箱处理器使用常规队列而不是ConcurrentQueue,这意味着post使用一个锁来排队,这意味着如果从两个不同的线程调用post,其中一个线程将阻塞线程,直到另一个调用返回-这将发生得非常快,但会阻塞


tl;dr:Post不会阻止,因为在发布方面没有做任何实际工作。

我几乎可以肯定你的答案是否定的,它不应该阻止Post。Post是一种只需将一个项目排队就可以了。