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

如何保证Erlang中的消息队列/顺序?,erlang,Erlang,如果一台服务器使用pid从一个进程接收多个请求!Msg,但每个请求的处理时间不同,那么如何保证发送者按顺序收到回复?来自: 10.8是否保证信息接收的顺序? 是的,但只在一个过程中 如果有一个活动进程,并且您先发送消息a,然后发送消息B,那么可以保证,如果消息B到达,消息a在它之前到达 另一方面,想象进程p、Q和R。p将消息A发送到Q,然后将消息B发送到R。不能保证A在B之前到达(如果需要的话,分布式Erlang将非常困难!) 也就是说,如果服务器按请求到达的顺序处理请求,并按请求处理的顺序发送

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

来自:

10.8是否保证信息接收的顺序? 是的,但只在一个过程中

如果有一个活动进程,并且您先发送消息a,然后发送消息B,那么可以保证,如果消息B到达,消息a在它之前到达

另一方面,想象进程p、Q和R。p将消息A发送到Q,然后将消息B发送到R。不能保证A在B之前到达(如果需要的话,分布式Erlang将非常困难!)

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

来自:

10.8是否保证信息接收的顺序? 是的,但只在一个过程中

如果有一个活动进程,并且您先发送消息a,然后发送消息B,那么可以保证,如果消息B到达,消息a在它之前到达

另一方面,想象进程p、Q和R。p将消息A发送到Q,然后将消息B发送到R。不能保证A在B之前到达(如果需要的话,分布式Erlang将非常困难!)


也就是说,如果服务器按请求到达的顺序处理请求,并按请求处理的顺序发送响应,那么发送方将按顺序接收响应。

Erlangreceive子句可以进行模式匹配。所以,您可以做的是为希望接收的每条消息创建一个引用,然后对该引用进行模式匹配


如果查看第26行,您将看到receive子句正在等待具有特定pid的消息。在这种情况下,消息将以任意顺序到达,但通过此接收,消息将按顺序发送

Erlangreceive子句可以进行模式匹配。所以,您可以做的是为希望接收的每条消息创建一个引用,然后对该引用进行模式匹配

如果查看第26行,您将看到receive子句正在等待具有特定pid的消息。在这种情况下,消息将以任意顺序到达,但通过此接收,消息将按顺序发送