是否可以在发送消息时取消消息?

时间:2016-05-27 19:18:43

标签: erlang

流程AB 1分钟后向send_after发送请求(我们称之为request)。但B有1分钟取消它。

可以Bcancel发送A并阻止该消息在此时间段内发送吗?

1 个答案:

答案 0 :(得分:7)

是的,你可以。

当您使用erlang:send_after时,它会返回TimerRef。 如果您想取消请求,只需致电erlang:cancel_timer(TimerRef)erlang:cancel_timer(TimerRef, Options)

在您的情况下,如果您希望流程B取消消息,则必须从TimerRefA发送B,然后致电erlang:cancel_timer(TimerRef)在进程B中取消此特定发送请求。

有关详细信息,请查看erlang文档erlang:cancel_timer/2