假设我调用了MailboxProcessor.PostAndReply,由于任何原因,它可能运行很长时间。如果在第一个调用尚未返回时从其他线程调用MailboxProcessor.Post,会发生什么情况?
我的意思是,是的,当然,我可以写一个能重现这种情况的测试。然而,在我重新发明自行车之前,我想知道是否有人已经知道这个问题的答案了。
非常感谢!
发布于 2020-05-22 04:24:38
简短的回答是:不,它不会阻止。
更长的版本:邮箱处理器使用常规的Queue<T>而不是ConcurrentQueue<T> --这意味着post使用一个锁来排队,这意味着如果要从两个不同的线程调用一个post,一个线程会阻塞线程直到另一个调用返回--这会很快发生,但是会阻塞。
tl;dr: Post不阻塞,因为在发布方面没有实际的工作。
https://stackoverflow.com/questions/61945746
复制相似问题