如何保证Erlang中的消息队列/顺序?

bil*_*cyz 0 erlang

如果一个服务器使用pid从一个进程接收多个请求!Msg,但每个请求的处理时间不同,那么如何保证发件人按顺序收到回复?

leg*_*cia 5

Erlang FAQ:

10.8邮件接收顺序是否有保证?

是的,但只在一个过程中.

如果有一个实时进程并且你发送消息A然后发送消息B,则保证如果消息B到达,则消息A到达它之前.

另一方面,假设进程P,Q和R.P将消息A发送到Q,然后将消息B发送到R.不能保证A在B之前到达.(如果需要,则分布式Erlang会非常困难) !)

也就是说,如果服务器按照它们到达的顺序处理请求,并按处理请求的顺序发送响应,则发送方将按顺序接收响应.