F# MailboxProcessor.PostAndReply 会阻塞 Post 吗?
F# Does MailboxProcessor.PostAndReply blocks Post?
假设我打电话给 MailboxProcessor.PostAndReply
,由于某种原因,它可能 运行 很长时间。如果我在第一个调用尚未返回时从其他线程调用 MailboxProcessor.Post
会发生什么情况?
我的意思是,是的,当然,我可以编写一个测试来重现这种情况。然而,在我开始重新发明自行车之前,我想知道是否有人已经知道这个问题的答案。
非常感谢!
简短的回答:不,它不会阻塞。
较长的版本:
邮箱处理器使用常规 Queue<T>
而不是 ConcurrentQueue<T>
- 这意味着 posting 使用锁入队,这意味着如果要从两个不同的线程调用 post ,一个会阻塞线程直到另一个调用返回——这会发生得非常快,但会阻塞。
tl;dr:Post 不会阻塞,因为在 posting 上没有完成任何实际工作。
假设我打电话给 MailboxProcessor.PostAndReply
,由于某种原因,它可能 运行 很长时间。如果我在第一个调用尚未返回时从其他线程调用 MailboxProcessor.Post
会发生什么情况?
我的意思是,是的,当然,我可以编写一个测试来重现这种情况。然而,在我开始重新发明自行车之前,我想知道是否有人已经知道这个问题的答案。
非常感谢!
简短的回答:不,它不会阻塞。
较长的版本:
邮箱处理器使用常规 Queue<T>
而不是 ConcurrentQueue<T>
- 这意味着 posting 使用锁入队,这意味着如果要从两个不同的线程调用 post ,一个会阻塞线程直到另一个调用返回——这会发生得非常快,但会阻塞。
tl;dr:Post 不会阻塞,因为在 posting 上没有完成任何实际工作。