【发布时间】:2020-09-11 03:09:23
【问题描述】:
我有一个进程代码,我想发送一个“死”问题来杀死它。但是我想确保每次杀死消息都被优先处理,所以如果有一个 - 进程将立即死亡。
receive
die -> dead;
after
0 -> receive
Message -> do_something(Message)
after
0 -> func(NewX)
end
end.
【问题讨论】:
标签: erlang
我有一个进程代码,我想发送一个“死”问题来杀死它。但是我想确保每次杀死消息都被优先处理,所以如果有一个 - 进程将立即死亡。
receive
die -> dead;
after
0 -> receive
Message -> do_something(Message)
after
0 -> func(NewX)
end
end.
【问题讨论】:
标签: erlang
使用您的代码,您正忙于等待,您可以执行以下操作:
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.
【讨论】: