diff options
| -rw-r--r-- | ev.pod | 22 | 
1 files changed, 12 insertions, 10 deletions
| @@ -216,7 +216,7 @@ recommended ones.  See the description of C<ev_embed> watchers for more info. -=item ev_set_allocator (void *(*cb)(void *ptr, long size)) +=item ev_set_allocator (void *(*cb)(void *ptr, long size)) [NOT REENTRANT]  Sets the allocation function to use (the prototype is similar - the  semantics are identical to the C<realloc> C89/SuS/POSIX function). It is @@ -252,7 +252,7 @@ retries (example requires a standards-compliant C<realloc>).     ...     ev_set_allocator (persistent_realloc); -=item ev_set_syserr_cb (void (*cb)(const char *msg)); +=item ev_set_syserr_cb (void (*cb)(const char *msg)); [NOT REENTRANT]  Set the callback function to call on a retryable system call error (such  as failed select, poll, epoll_wait). The message is a printable string @@ -3305,12 +3305,13 @@ And a F<ev_cpp.C> implementation file that contains libev proper and is compiled  =head2 THREADS -Libev itself is thread-safe (unless the opposite is specifically -documented for a function), but it uses no locking itself. This means that -you can use as many loops as you want in parallel, as long as only one -thread ever calls into one libev function with the same loop parameter: -libev guarantees that different event loops share no data structures that -need locking. +All libev functions are reentrant and thread-safe unless explicitly +documented otherwise, but it uses no locking itself. This means that you +can use as many loops as you want in parallel, as long as there are no +concurrent calls into any libev function with the same loop parameter +(C<ev_default_*> calls have an implicit default loop parameter, of +course): libev guarantees that different event loops share no data +structures that need any locking.  Or to put it differently: calls with different loop parameters can be done  concurrently from multiple threads, calls with the same loop parameter @@ -3320,11 +3321,12 @@ a mutex per loop).  Specifically to support threads (and signal handlers), libev implements  so-called C<ev_async> watchers, which allow some limited form of -concurrency on the same event loop. +concurrency on the same event loop, namely waking it up "from the +outside".  If you want to know which design (one loop, locking, or multiple loops  without or something else still) is best for your problem, then I cannot -help you. I can give some generic advice however: +help you, but here is some generic advice:  =over 4 | 
