What is "cheaper"?

Valentin Micic v@REDACTED
Thu Mar 25 13:14:33 CET 2021


Hi,

Usually, when I use erlang:send_after/3, but no longer need the “ordered" event, I issue a corresponding erlang:cancel_timer/1 to stop this event from being raised.

As an example, consider a following code snippet:

ReqRef = make_ref(),
SomeServerPid ! {request, {ReqRef, [arg1, arg2, . . ., argn]} ),
Ref = erlang:send_after( 5000, self(), {cancel, ReqRef} ),

receive
   {ReqRef, some_reply}
   -> 
       erlang:cancel_timer(Ref),
       some_reply
   ;
   {cancel, ReqRef}
   ->
        “Request Timeout!”
end

This is what I usually do, because I believed that it would be more cost effective to cancel the timer than to ignore the message ordered by send_after/3.
As I never really critically examined this claim, is there anyone that may have a different opinion regarding this.

Put differently, ensuring that no memory leak is possible (due to general nature of the code handling messages), would it be “cheaper" to ignore the message generated by send_after/3 instead of canceling it?

Kind regards

V/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20210325/2e50be61/attachment.htm>


More information about the erlang-questions mailing list