What is "cheaper"?
Valentin Micic <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <[email protected]> |
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/