[erlang-questions] driver_entry stop() and driver_async() interaction

Paul Fisher <>
Thu Oct 16 17:34:33 CEST 2008


Question about work scheduled on async threads via driver_async() and 
still pending (i.e. they are still on the queue to be executed,) when 
the stop() callback is invoked.  Specifically, assuming smp w/async 
thread pool and the driver marked ERL_DRV_FLAG_USE_PORT_LOCKING.

Is it the responsibility of the code in the stop() callback to call 
driver_async_cancel() on each outstanding async work item, or will this 
be done automatically by the emulator before the call to stop()?

If this is the responsibility of the code in stop(), is it guaranteed 
that no async work item will be executing or scheduled during the call 
to the stop() callback?

If no guarantee is made, is holding the PDL necessary and sufficient to 
guarantee this?


--
paul



More information about the erlang-questions mailing list