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

Joã*_*aça 4 erlang

进程在1分钟后A发送请求(让我们称之为).但有1分钟取消它.Bsend_afterrequestB

可以B发送cancelA和防止这一时间跨度内发送该消息?

A. *_*rid 7

是的你可以.

当你使用erlang:send_after它时返回一个TimerRef.如果你想取消请求,你只需要打电话erlang:cancel_timer(TimerRef)erlang:cancel_timer(TimerRef, Options).

在你的情况,如果你要处理B取消的消息,你将不得不派TimerRefAB,然后调用erlang:cancel_timer(TimerRef)过程B,以取消该特定发送请求.

erlang:cancel_timer/2有关更多信息,请查看erlang文档.