<p dir="ltr">Those functions have their own synchronization so no need to add your own. The usage case you describe sound fine.</p>
<br><div class="gmail_quote"><div dir="ltr">On Thu, Aug 4, 2016, 03:41 Vincent Siliakus <<a href="mailto:zambal@gmail.com">zambal@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Hi,</p>
<p dir="ltr">Does anyone know if synchronization is needed when one calls enif_keep_resource in nif functions and enif_release_resource in a nif background thread? Or in other words: is the ref counting that is used under the hood thread safe?</p>
<p dir="ltr">I ask this because during some refactoring of code in the LMDB driver I'm developing at <a href="https://github.com/zambal/elmdb" target="_blank">https://github.com/zambal/elmdb</a> I stumbled upon a problem that might have been caused by unsynchronized calls to these functions. However,  when I searched github for other code that uses resources , I couldn't find examples that use synchronization, but that might be because it's simply not needed in those libraries, so I'm still not sure.</p>
<p dir="ltr">Thanks,<br>
Vincent<br>
</p>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div>