Re: What is "cheaper"?
Valentin Micic <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <[email protected]> |
> On 25 Mar 2021, at 14:59, Nalin Ranjan <[email protected]> wrote: > > On Thu, Mar 25, 2021, 5:44 PM Valentin Micic <[email protected] <mailto:[email protected]>> wrote: > 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 > > How do we ignore the messages? > > generated by send_after/3 instead of canceling it? > > Kind regards > > V/ > > > नमस्ते। > नलिन रंजन How does one ignore a message? Well, one way would be to receive a message, but do nothing with it (e.g. drop it). Or at least this is what I meant by it. (Also, I thought that my reference to “no memory leak” would have been sufficient to hint that a receiving process will remove a message from its queue). But, Culpa Mea — I should have formulated my question a bit better. Thus, let me take another stab at it: what would be more efficient, canceling the timer (and thus avoiding generation of the message), or letting the send_after/3 generating (and runtime delivering) the message? The answer should be considered relative to the "event ordering" process — will it spend more time canceling the message, or removing generated message from its queue)? Kind regards V/