【问题标题】:Process message prioritizing Erlang, also known as Selective Receives优先处理 Erlang 的消息,也称为选择性接收
【发布时间】:2020-09-11 03:09:23
【问题描述】:

我有一个进程代码,我想发送一个“死”问题来杀死它。但是我想确保每次杀死消息都被优先处理,所以如果有一个 - 进程将立即死亡。

receive 
 die -> dead;
after
0 -> receive
      Message -> do_something(Message)
    after
    0 -> func(NewX)
    end
end.

【问题讨论】:

    标签: erlang


    【解决方案1】:

    使用您的代码,您正忙于等待,您可以执行以下操作:

    func(X) ->
        receive % This checks the whole mailbox for 'die'
            die -> dead; 
        after 0 -> % No 'die' message in mailbox, process the next Message whenever it arrives
            receive % This checks only the next Message in the mailbox
                die -> dead;
                Message -> func(do_something(X, Message))
            end
        end.
    

    【讨论】:

      猜你喜欢
      • 2010-10-31
      • 2019-12-25
      • 2016-03-19
      • 2012-06-13
      • 2014-04-03
      • 2017-11-28
      • 1970-01-01
      • 2012-08-28
      • 2014-02-18
      相关资源
      最近更新 更多