diff options
Diffstat (limited to 'usr/src/man/man5/condition.5')
| -rw-r--r-- | usr/src/man/man5/condition.5 | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/usr/src/man/man5/condition.5 b/usr/src/man/man5/condition.5 deleted file mode 100644 index 1282ea26e8..0000000000 --- a/usr/src/man/man5/condition.5 +++ /dev/null @@ -1,141 +0,0 @@ -.\" -.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for -.\" permission to reproduce portions of its copyrighted documentation. -.\" Original documentation from The Open Group can be obtained online at -.\" http://www.opengroup.org/bookstore/. -.\" -.\" The Institute of Electrical and Electronics Engineers and The Open -.\" Group, have given us permission to reprint portions of their -.\" documentation. -.\" -.\" In the following statement, the phrase ``this text'' refers to portions -.\" of the system documentation. -.\" -.\" Portions of this text are reprinted and reproduced in electronic form -.\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition, -.\" Standard for Information Technology -- Portable Operating System -.\" Interface (POSIX), The Open Group Base Specifications Issue 6, -.\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics -.\" Engineers, Inc and The Open Group. In the event of any discrepancy -.\" between these versions and the original IEEE and The Open Group -.\" Standard, the original IEEE and The Open Group Standard is the referee -.\" document. The original Standard can be obtained online at -.\" http://www.opengroup.org/unix/online.html. -.\" -.\" This notice shall appear on any product containing this material. -.\" -.\" The contents of this file are subject to the terms of the -.\" Common Development and Distribution License (the "License"). -.\" You may not use this file except in compliance with the License. -.\" -.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -.\" or http://www.opensolaris.org/os/licensing. -.\" See the License for the specific language governing permissions -.\" and limitations under the License. -.\" -.\" When distributing Covered Code, include this CDDL HEADER in each -.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. -.\" If applicable, add the following below this CDDL HEADER, with the -.\" fields enclosed by brackets "[]" replaced with your own identifying -.\" information: Portions Copyright [yyyy] [name of copyright owner] -.\" -.\" -.\" Portions Copyright (c) 1995 IEEE All Rights Reserved -.\" Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved. -.\" Copyright (c) 2001, The IEEE and The Open Group. All Rights Reserved. -.\" -.TH CONDITION 5 "May 16, 2020" -.SH NAME -condition \- concepts related to condition variables -.SH DESCRIPTION -Occasionally, a thread running within a mutex needs to wait for an event, in -which case it blocks or sleeps. When a thread is waiting for another thread to -communicate its disposition, it uses a condition variable in conjunction with a -mutex. Although a mutex is exclusive and the code it protects is sharable (at -certain moments), condition variables enable the synchronization of differing -events that share a mutex, but not necessarily data. Several condition -variables may be used by threads to signal each other when a task is complete, -which then allows the next waiting thread to take ownership of the mutex. -.sp -.LP -A condition variable enables threads to atomically block and test the condition -under the protection of a mutual exclusion lock (mutex) until the condition is -satisfied. If the condition is false, a thread blocks on a condition variable -and atomically releases the mutex that is waiting for the condition to change. -If another thread changes the condition, it may wake up waiting threads by -signaling the associated condition variable. The waiting threads, upon -awakening, reacquire the mutex and re-evaluate the condition. -.SS "Initialize" -Condition variables and mutexes should be global. Condition variables that are -allocated in writable memory can synchronize threads among processes if they -are shared by the cooperating processes (see \fBmmap\fR(2)) and are initialized -for this purpose. -.sp -.LP -The scope of a condition variable is either intra-process or inter-process. -This is dependent upon whether the argument is passed implicitly or explicitly -to the initialization of that condition variable. A condition variable does -not need to be explicitly initialized. A condition variable is initialized with -all zeros, by default, and its scope is set to within the calling process. For -inter-process synchronization, a condition variable must be initialized once, -and only once, before use. -.sp -.LP -A condition variable must not be simultaneously initialized by multiple threads -or re-initialized while in use by other threads. -.sp -.LP -Condition variables attributes may be set to the default or customized at -initialization. POSIX threads even allow the default values to be customized. -Establishing these attributes varies depending upon whether POSIX or Solaris -threads are used. Similar to the distinctions between POSIX and Solaris thread -creation, POSIX condition variables implement the default, intra-process, -unless an attribute object is modified for inter-process prior to the -initialization of the condition variable. Solaris condition variables also -implement as the default, intra-process; however, they set this attribute -according to the argument, \fItype\fR, passed to their initialization function. -.SS "Condition Wait" -The condition wait interface allows a thread to wait for a condition and -atomically release the associated mutex that it needs to hold to check the -condition. The thread waits for another thread to make the condition true and -that thread's resulting call to signal and wakeup the waiting thread. -.SS "Condition Signaling" -A condition signal allows a thread to unblock the next thread waiting on the -condition variable, whereas, a condition broadcast allows a thread to unblock -all threads waiting on the condition variable. -.SS "Destroy" -The condition destroy functions destroy any state, but not the space, -associated with the condition variable. -.SH ATTRIBUTES -See \fBattributes\fR(5) for descriptions of the following attributes: -.sp - -.sp -.TS -box; -c | c -l | l . -ATTRIBUTE TYPE ATTRIBUTE VALUE -_ -MT-Level MT-Safe -.TE - -.SH SEE ALSO -\fBfork\fR(2), \fBmmap\fR(2), \fBsetitimer\fR(2), \fBshmop\fR(2), -\fBcond_broadcast\fR(3C), \fBcond_destroy\fR(3C), \fBcond_init\fR(3C), -\fBcond_signal\fR(3C), \fBcond_timedwait\fR(3C), \fBcond_wait\fR(3C), -\fBpthread_cond_broadcast\fR(3C), \fBpthread_cond_destroy\fR(3C), -\fBpthread_cond_init\fR(3C), \fBpthread_cond_signal\fR(3C), -\fBpthread_cond_timedwait\fR(3C), \fBpthread_cond_wait\fR(3C), -\fBpthread_condattr_init\fR(3C), \fBsignal\fR(3C), \fBattributes\fR(5), -\fBmutex\fR(5), \fBstandards\fR(5) -.SH NOTES -If more than one thread is blocked on a condition variable, the order in which -threads are unblocked is determined by the scheduling policy. -.sp -.LP -\fBUSYNC_THREAD\fR does not support multiple mappings to the same logical -synch object. If you need to \fBmmap()\fR a synch object to different locations -within the same address space, then the synch object should be initialized as a -shared object \fBUSYNC_PROCESS\fR for Solaris, and -\fBPTHREAD_PROCESS_PRIVATE\fR for POSIX. |
