<div dir="ltr"><div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Mon, Oct 29, 2018 at 5:48 PM Roger Lipscombe <<a href="mailto:roger@differentpla.net">roger@differentpla.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I'd like to start a timer in my NIF. It should send a message to an<br>
Erlang process after a delay. There doesn't appear to be an<br>
enif_send_after.<br>
<br>
Is there any way to do this?<br></blockquote><div><br></div><div>No, there is no way to do this. One of the reasons this would be difficult to implement is because it is currently only possible to create timers on normal schedulers. So that functionality would have to be extended to be useable from dirty schedulers, which is no small task.</div><div><br></div><div>If I were to do what you are after, I would first see if it is fast enough to setup timers as the nif returns, using a monotonic timestamp to adjust them for the time it took for the nif to return.</div><div><br></div><div>Another idea would be to use timerfd_create and then do a enif_select on that. Or just roll your own thread, with a small enough number of counters it should be simple enough.</div><div><br></div><div>Lukas</div></div></div></div>