<div dir="ltr"><div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Tue, Oct 30, 2018 at 4:04 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">On 30 October 2018 at 14:03, Nathaniel Waisbrot <<a href="mailto:nathaniel@waisbrot.net" target="_blank">nathaniel@waisbrot.net</a>> wrote:<br>
> Maybe you could use a port driver for this.<br>
> <a href="http://erlang.org/doc/man/erl_driver.html" rel="noreferrer" target="_blank">http://erlang.org/doc/man/erl_driver.html</a><br>
<br>
The port driver API does appear to be slightly "richer" in the<br>
specific timer/select area, but the API looks kinda complicated, and<br>
we've already got a NIF, so...<br></blockquote><div><br></div><div>From the documentation: <a href="http://erlang.org/doc/man/erl_driver.html">http://erlang.org/doc/man/erl_driver.html</a></div><div><br></div><div>"<span style="color:rgb(26,26,26);font-family:sans-serif;background-color:rgb(254,254,254)">Most functions in this API are </span><strong style="color:rgb(26,26,26);font-family:sans-serif;background-color:rgb(254,254,254)">not</strong><span style="color:rgb(26,26,26);font-family:sans-serif;background-color:rgb(254,254,254)"> thread-safe, that is, they </span><strong style="color:rgb(26,26,26);font-family:sans-serif;background-color:rgb(254,254,254)">cannot</strong><span style="color:rgb(26,26,26);font-family:sans-serif;background-color:rgb(254,254,254)"> be called from arbitrary threads. Functions that are not documented as thread-safe can only be called from driver callbacks or function calls descending from a driver callback call."</span></div><div><br></div><div>So, you cannot use the driver timer functions in arbitrary threads either.</div><div><br></div><div>Lukas</div></div></div></div>