消息到达邮箱处理器的顺序

时间:2012-04-01 21:28:38

标签: f# mailboxprocessor

是否/如何保证发送到邮箱处理器的邮件的到达顺序

也就是说,如果我做的话就在一个帖子上

agent.post(msg1)
agent.post(msg2)

我怎样才能确定在代理的处理循环中,将按顺序接收消息?

2 个答案:

答案 0 :(得分:3)

他们是。 Post的实现正如您所猜测的那样,它只是向队列添加一个项目(在当前线程上,在锁定下),并且帖子工作以通知任何等待代理唤醒并处理它。因此,如果您在同一个线程上一次又一次地调用Post,则消息将按此顺序进入队列。

答案 1 :(得分:0)

如果您有某种检测顺序的方法,也可以使用inbox.Scan(function _ -> None // return an Option)查找消息。当然,这会对性能产生代价,因此单独排队是最好的选择。