Are NIF resources meant to be destroyed immediately on GC?

Sverker Eriksson sverker.eriksson@REDACTED
Tue Nov 24 21:25:03 CET 2020


 

 

From: Sean Hinde <sean.hinde@REDACTED> 
Sent: den 24 november 2020 19:16
To: Sverker Eriksson <sverker.eriksson@REDACTED>
Cc: Erlang Questions <erlang-questions@REDACTED>
Subject: Re: Are NIF resources meant to be destroyed immediately on GC?

 

 





On 23 Nov 2020, at 23:16, Sverker Eriksson <sverker.eriksson@REDACTED
<mailto:sverker.eriksson@REDACTED> > wrote:

 

Prior to OTP 22.0 resource destructors were called directly by the thread
that happened to decrease the reference counter down to zero.

>From OTP 22.0 resource destructors are scheduled. This in order to ensure a
stable known execution context for the destructor callback. So it may not
have executed when erlang:garbage_collect  returns, but will very soon
(unless you have a very overloaded system or a bug preventing ref counter
from reaching zero).

 

/Sverker, Erlang/OTP

 

 

This a really nice change. It opens the door to resource destructors being
safe for closing external resources like database handles that might take a
while.

 

Super cool!

 

Sorry to disappoint, but no.

By "scheduled" I just meant "put in run queue to be executed at a later
time". Destructors are still executed by a normal scheduler threads and not
dirty schedulers.

 

/Sverker

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20201124/a26ecdd0/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5509 bytes
Desc: not available
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20201124/a26ecdd0/attachment.bin>


More information about the erlang-questions mailing list