gpt4 book ai didi

erlang - 有没有一种聪明的方法来赋予消息不同的优先级?

转载 作者:行者123 更新时间:2023-12-02 09:07:57 26 4
gpt4 key购买 nike

我一直在想,我希望能够在与 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:

我还尝试过采用中介者类型的方法,其中首先将消息设置为“前台”,然后将消息发送到高队列或低队列,最后将消息发送到“前台”。 “worker”线程首先从高队列请求作业,如果该队列没有任何内容,则从低队列请求作业,如下所示:

enter image description here

这样做的缺点是必须等待请求到达不同队列的前面,也许某种优先级系统可以工作:-)

有没有更聪明的方法来做这样的事情?

最佳答案

我认为这篇论文回答了你的问题:

https://www.erlang-solutions.com/upload/docs/9/erlang11-nystrom.pdf

基本上,您希望收到如下信息:

receive
{hi_priority, Msg} -> Msg
after 0 ->
receive
Msg -> Msg
end
end

正如Erlang的文档所说,“after 0”意味着如果邮箱中没有匹配(优先级)的消息,超时将立即发生。

我不知道有什么更聪明的方法:)

关于erlang - 有没有一种聪明的方法来赋予消息不同的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8699498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com