当前位置:  开发笔记 > 编程语言 > 正文

是否可以在Erlang中构建工作队列?

如何解决《是否可以在Erlang中构建工作队列?》经验,为你挑选了1个好方法。

我在Erlang中看过很多聊天示例但是列表如工作队列呢?如果我想构建一个工作队列系统,比如项目管理系统,是否可以在进程邮箱中重新排序消息,还是必须使用消息优先级?是否有Erlang内置的工作流系统示例?



1> Adam Lindber..:

您无法在Erlang中重新排序进程消息队列中的消息.

但是,您可以选择接收,您可以先收到您认为最重要的信息.它并不完全相同,但适用于大多数用途.

这是一个例子:

receive
    {important, Msg} ->
        handle(Msg)
after 0 ->
    ok
end,
receive
    OtherMsg ->
        handle(Msg)
end

它不同于:

receive
    {important, Msg} ->
        handle(Msg);
    OtherMsg ->
        handle(Msg)
end

因为它将始终扫描整个消息队列,{important, Msg}然后继续处理其余消息.这意味着这些类型的消息将始终在任何其他消息之前处理(如果存在).这当然是在一些性能成本(扫描整个队列两次需要更多时间).

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有