[erlang-questions] NIF vs. Linked-in Drivers
Tue Dec 8 19:49:18 CET 2009
Evans, Matthew wrote:
> Are there any guidelines as to the use of the new Erlang NIF vs. a linked-in port driver?
> We have an application that needs to access C code, and are currently thinking (and have used in the past) a linked-in port driver. Under what situations would that approach be better than a NIF, and visa versa?
A driver is definitely better if you want to be asynchronous and react
on events from some "device".
NIFs are by nature synchronous. You call them as any Erlang function and
get a return value back. You will block the calling scheduler thread
until the NIF returns, so you don't want to do too heavy computations in
one call. Drivers currently have more support like threading and message
sending to work around that, but the NIFs will most probably get at
least some sort of support to be more "interruptable".
/Sverker, Erlang/OTP Ericsson
More information about the erlang-questions