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