我在Erlang中看过很多聊天示例但是列表如工作队列呢?如果我想构建一个工作队列系统,比如项目管理系统,是否可以在进程邮箱中重新排序消息,还是必须使用消息优先级?是否有Erlang内置的工作流系统示例?
您无法在Erlang中重新排序进程消息队列中的消息.
但是,您可以选择接收,您可以先收到您认为最重要的信息.它并不完全相同,但适用于大多数用途.
这是一个例子:
receive
{important, Msg} ->
handle(Msg)
after 0 ->
ok
end,
receive
OtherMsg ->
handle(Msg)
end
Run Code Online (Sandbox Code Playgroud)
它不同于:
receive
{important, Msg} ->
handle(Msg);
OtherMsg ->
handle(Msg)
end
Run Code Online (Sandbox Code Playgroud)
因为它将始终扫描整个消息队列,{important, Msg}然后继续处理其余消息.这意味着这些类型的消息将始终在任何其他消息之前处理(如果存在).这当然是在一些性能成本(扫描整个队列两次需要更多时间).
| 归档时间: |
|
| 查看次数: |
1017 次 |
| 最近记录: |