--- libev/ev.pod 2008/04/23 08:21:02 1.147 +++ libev/ev.pod 2008/04/24 01:42:11 1.148 @@ -3262,6 +3262,38 @@ =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 .