(no title)
tontinton | 2 years ago
Now that I reread that section, it also depends on whether you call a BIF or not, I'll think about how to phrase that better in the blog post.
Thanks!
tontinton | 2 years ago
Now that I reread that section, it also depends on whether you call a BIF or not, I'll think about how to phrase that better in the blog post.
Thanks!
rdtsc|2 years ago
Another interesting idea is that a NIF which may not reschedule themselves with yield, can still signal the scheduler that they are consuming so many "reductions" if they did some lengthy work. So if, say, they run for 10 msec, they might want to bump the reduction counter a bit: enif_consume_timeslice. Otherwise a tight recursive loop calling the same NIF could still effectively block the VM.
[1] https://www.erlang.org/doc/man/erl_nif#enif_schedule_nif
[2] https://github.com/erlang/otp/blob/ab7b354c37dac92704faac455...
[3] https://www.erlang.org/doc/man/erl_nif#enif_consume_timeslic...