6
我一直在想,当与erlang进程交谈时,我希望能够分配不同的消息。有没有一种巧妙的方式来给消息提供不同的优先级?
我希望能够先处理高优先级的消息,然后再低优先级一次。
我已经尝试不同的方法,方法1:
loop() ->
receive
{high, Msg} ->
Do something with the message,
loop()
after 0 ->
ok
end,
receive
{low, Msg} ->
Do something with the message,
loop()
after 0 ->
loop()
end.
这做工作,但它是安静的慢。我想接收者必须查看所有消息,看看每次运行时是否有“高”消息。
方法2:
我还试图做介体类型的方法,其中消息是第一组的“前台”的“前台”,然后发送该消息到任何高队列或低队列,然后最后一个“工人”线程请求的作业从firsk高队列,如果队列中有什么,然后从低队列,为ilustrated这里:
这不得不不得不等待请求到达不同队列前端的缺点,或许某种优先系统可以工作: - )
有没有更聪明的方式来做这样的事情?
真棒,Fhat正是我一直在寻找:-) – 2012-01-02 10:25:20
是否“非重要”的消息后,收到的简历得到读的任何更聪明的方式?所以,如果我现在没有什么重要的东西,它会在阅读非重要的东西之后继续等待重要的东西吗? – Bula 2015-09-14 19:35:31