aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads/man
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads/man')
-rw-r--r--linuxthreads/man/pthread_atfork.man13
1 files changed, 4 insertions, 9 deletions
diff --git a/linuxthreads/man/pthread_atfork.man b/linuxthreads/man/pthread_atfork.man
index 4d06a56f8b..b682bed3ac 100644
--- a/linuxthreads/man/pthread_atfork.man
+++ b/linuxthreads/man/pthread_atfork.man
@@ -30,15 +30,10 @@ while the |parent| and |child| handlers are called in FIFO order
To understand the purpose of !pthread_atfork!, recall that !fork!(2)
duplicates the whole memory space, including mutexes in their current
locking state, but only the calling thread: other threads are not
-running in the child process. Thus, if a mutex is locked by a thread
-other than the thread calling !fork!, that mutex will remain locked
-forever in the child process, possibly blocking the execution of the
-child process. To avoid this, install handlers with !pthread_atfork!
-as follows: the |prepare| handler locks the global mutexes (in locking
-order), and the |parent| and |child| handlers unlock them (in
-reverse order). Alternatively, |prepare| and |parent| can be set to
-!NULL! and |child| to a function that calls !pthread_mutex_init! on
-the global mutexes.
+running in the child process. The mutexes are not usable after the
+!fork! and must be initialized with |pthread_mutex_init| in the child
+process. This is a limitation of the current implementation and might
+or might not be present in future versions.
.SH "RETURN VALUE"