From 14f0297b13c80647c6e029db35a1aa728ee3c9ae Mon Sep 17 00:00:00 2001 From: root Date: Thu, 24 Apr 2008 01:42:11 +0000 Subject: *** empty log message *** --- ev.pod | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'ev.pod') diff --git a/ev.pod b/ev.pod index 513a0c3..77029fa 100644 --- a/ev.pod +++ b/ev.pod @@ -3262,6 +3262,38 @@ calling select (O(n²)) will likely make this unworkable. =back +=head1 PORTABILITY REQUIREMENTS + +In addition to a working ISO-C implementation, libev relies on a few +additional extensions: + +=over 4 + +=item C must be thread-atomic as well + +The type C (or whatever is defined as +C) must be atomic w.r.t. accesses from different +threads. This is not part of the specification for C, but is +believed to be sufficiently portable. + +=item C must work in a threaded environment + +Libev uses C to temporarily block signals. This is not +allowed in a threaded program (C has to be used). Typical +pthread implementations will either allow C in the "main +thread" or will block signals process-wide, both behaviours would +be compatible with libev. Interaction between C and +C could complicate things, however. + +The most portable way to handle signals is to block signals in all threads +except the initial one, and run the default loop in the initial thread as +well. + +=back + +If you know of other additional requirements drop me a note. + + =head1 AUTHOR Marc Lehmann . -- cgit v1.2.3