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