1 .\" Copyright (C) 1996-1999 Free Software Foundation, Inc.
3 .\" Permission is granted to make and distribute verbatim copies of
4 .\" this manual provided the copyright notice and this permission notice are
5 .\" preserved on all copies.
7 .\" Permission is granted to copy and distribute modified versions of
8 .\" this manual under the conditions for verbatim copying, provided that
9 .\" the entire resulting derived work is distributed under the terms of a
10 .\" permission notice identical to this one.
12 .\" Permission is granted to copy and distribute translations of this
13 .\" manual into another language, under the above conditions for modified
14 .\" versions, except that this permission notice may be stated in a
15 .\" translation approved by the Foundation.
17 .\" Copyright (C) 1996 Xavier Leroy.
19 .\" Japanese Version Copyright (C) 2000 WAKABAYASHI, Takeyasu
20 .\" all rights reserved.
21 .\" Translated on Fri Jan 14 16:50:24 JST 2000
22 .\" by WAKABAYASHI, Takeyasu <twakaba@eco.toyama-u.ac.jp>
23 .\" Updated and modified Sun Feb 2 15:15:47 JST 2003
24 .\" by Suzuki Takashi.
26 .\"WORD: mutual exclusion ÇÓ¾À©¸æ
27 .\"WORD: critical section ¥¯¥ê¥Æ¥£¥«¥ë¥»¥¯¥·¥ç¥ó
29 .TH PTHREAD_MUTEX 3 LinuxThreads
33 pthread_mutex_init, pthread_mutex_lock, pthread_mutex_trylock,
34 pthread_mutex_unlock, pthread_mutex_destroy \- mutex ¤ÎÁàºî
37 .B #include <pthread.h>
39 .BI "pthread_mutex_t " fastmutex " = PTHREAD_MUTEX_INITIALIZER;"
41 .BI "pthread_mutex_t " recmutex " = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;"
43 .BI "pthread_mutex_t " errchkmutex " = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;"
45 .BI "int pthread_mutex_init(pthread_mutex_t *" mutex ", const pthread_mutexattr_t *" mutexattr ");"
47 .BI "int pthread_mutex_lock(pthread_mutex_t *" mutex "));"
49 .BI "int pthread_mutex_trylock(pthread_mutex_t *" mutex ");"
51 .BI "int pthread_mutex_unlock(pthread_mutex_t *" mutex ");"
53 .BI "int pthread_mutex_destroy(pthread_mutex_t *" mutex ");"
56 mutex ¤Ï¡¢ÇÓ¾À©¸æ (MUTual EXclusion) ¤Î»ÅÁȤߤǤ¢¤ê¡¢¶¦Í¥Ç¡¼¥¿¤ÎƱ»þ¹¹¿·
57 ¤«¤é¤ÎÊݸ¥¯¥ê¥Æ¥£¥«¥ë¥»¥¯¥·¥ç¥ó (critical section) ¤ä
58 ¥â¥Ë¥¿¤Î¼ÂÁõ¤Ê¤É¤Ë»È¤ï¤ì¤ë¡£
60 mutex ¤ÏÆó¤Ä¤Î¾õÂÖ¤ò¼è¤ê¤¦¤ë¡£¤½¤ì¤Ï¡¢¥¢¥ó¥í¥Ã¥¯¾õÂÖ(¤É¤Î¥¹¥ì¥Ã¥É¤Ë¤â
61 ÊÝͤµ¤ì¤Æ¤¤¤Ê¤¤)¤È¥í¥Ã¥¯¾õÂÖ(°ì¤Ä¤Î¥¹¥ì¥Ã¥É¤ËÊÝͤµ¤ì¤Æ¤¤¤ë)¤Ç¤¢¤ë¡£
62 Æó¤Ä¤Î°Û¤Ê¤ë¥¹¥ì¥Ã¥É¤¬Æ±»þ¤Ë°ì¤Ä¤Î mutex ¤òÊÝͤ¹¤ë¤³¤È¤Ï¤Ê¤¤¡£´û¤Ë¾¤Î
63 ¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ¥í¥Ã¥¯¤µ¤ì¤¿ mutex ¤ò¥í¥Ã¥¯¤·¤è¤¦¤È¤¹¤ë¥¹¥ì¥Ã¥É¤Ï¡¢ÊÝÍ
64 ¦¤Î¥¹¥ì¥Ã¥É¤¬Àè¤Ë¤½¤Î mutex ¤ò¥¢¥ó¥í¥Ã¥¯¤¹¤ë¤Þ¤Ç¼Â¹Ô¤òÄä»ß¤µ¤»¤é¤ì¤ë¡£
66 .B "pthread_mutex_init"
69 ¤¬»Ø¤¹ mutex ¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢
71 ¤Ç»ØÄꤵ¤ì¤¿ mutex °À¥ª¥Ö¥¸¥§¥¯¥È¤Ë½¾¤Ã¤Æ½é´ü²½¤¹¤ë¡£
75 ¤Ê¤é¤Ð¡¢¥Ç¥Õ¥©¥ë¥È¤Î°À¤¬¤³¤Î¤«¤ï¤ê¤Ë»È¤ï¤ì¤ë¡£
77 LinuxThreads ¤Î¼ÂÁõ¤Ï¤¿¤À°ì¤Ä¤Î°À
79 ¤À¤±¤ËÂбþ¤·¤Æ¤¤¤ë¡£¤³¤Î°À¤Ï¡¢¡Ö®¤¤¡×(``fast'')¡¢
80 ¡ÖºÆµ¢Åª¤Ê¡×(``recursive'')¡¢¤Þ¤¿¤Ï
81 ¡Ö¥¨¥é¡¼¸¡ºº¤ò¹Ô¤Ê¤¦¡×(``error checking'')¤Î¤¤¤º¤ì¤«¤ò
83 mutex ¤Î¼ïÊÌ(kind)¤Ï¡¢¤½¤Î mutex ¤ò´û¤ËÊÝͤ·¤Æ¤¤¤ë¥¹¥ì¥Ã¥É¤¬¡¢
84 ¤½¤ì¤òºÆ¤Ó¥í¥Ã¥¯¤Ç¤¤ë¤«¤É¤¦¤«¤ò·èÄꤹ¤ë¡£
85 ¥Ç¥Õ¥©¥ë¥È¤Î¼ïÊ̤ϡÖ®¤¤¡×¤Ç¤¢¤ë¡£mutex °À¤Î¤è¤ê¾Ü¤·¤¤¾ðÊó¤Ï¡¢
86 .BR "pthread_mutexattr_init" (3)
90 ·¿¤ÎÊÑ¿ô¤Ï¡¢(®¤¤ mutex ¤ËÂФ¹¤ë)Äê¿ô
91 .B "PTHREAD_MUTEX_INITIALIZER"
92 ¤È¡¢(ºÆµ¢Åª mutex ¤ËÂФ¹¤ë)
93 .B "PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP"
94 ¤ª¤è¤Ó¡¢(¥¨¥é¡¼¸¡ºº¤ò¹Ô¤Ê¤¦ mutex ¤ËÂФ¹¤ë)
95 .B "PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP"
96 ¤Ç¡¢ÀÅŪ¤Ë½é´ü²½¤¹¤ë¤³¤È¤â¤Ç¤¤ë¡£
98 .B "pthread_mutex_lock"
99 ¤Ï¡¢Í¿¤¨¤é¤ì¤¿ mutex ¤ò¥í¥Ã¥¯¤¹¤ë¡£mutex ¤¬¸½ºß¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢
100 ¤½¤ì¤Ï¥í¥Ã¥¯¤µ¤ì¡¢¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ½êͤµ¤ì¤ë¡£¤³¤Î¾ì¹ç
101 .B "pthread_mutex_lock"
102 ¤Ïľ¤Á¤ËÊ֤롣mutex ¤¬Â¾¤Î¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ´û¤Ë¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤¿¤Î¤Ê¤é¤Ð¡¢
103 .B "pthread_mutex_lock"
104 ¤Ï mutex ¤¬¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤ë¤Þ¤Ç¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Î¼Â¹Ô¤òÄä»ß¤µ¤»¤ë¡£
106 mutex ¤¬¸Æ¤Ó½Ð¤·Â¦¤Î¥¹¥ì¥Ã¥É¤Ë¤è¤ê´û¤Ë¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢
107 .B "pthread_mutex_lock"
108 ¤Î¿¶Éñ¤¤¤Ï¡¢mutex ¤Î¼ïÊ̤˰͸¤¹¤ë¡£mutex ¤Î¼ïÊ̤¬¡Ö®¤¤¡×¤Ç¤¢¤ì¤Ð¡¢
109 ¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ï mutex ¤¬¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤ë¤Þ¤Ç¼Â¹Ô¤òÄä»ß¤¹¤ë¡£
110 ½¾¤Ã¤Æ»ö¼Â¾å¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Î¥Ç¥Ã¥É¥í¥Ã¥¯¤ò°ú¤µ¯¤³¤¹¡£
111 mutex ¤Î¼ïÊ̤¬¡Ö¥¨¥é¡¼¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡×¤Ç¤¢¤ì¤Ð¡¢
112 .B "pthread_mutex_lock"
115 ¤È¤È¤â¤Ëľ¤Á¤ËÌá¤ë¡£mutex ¤Î¼ïÊ̤¬¡ÖºÆµ¢Åª¡×¤Ê¤é¤Ð¡¢
116 .B "pthread_mutex_lock"
117 ¤ÏÀ®¸ù¤·Ä¾¤Á¤ËÌá¤ë¡£¤³¤ÎºÝ¡¢¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤¬¡¢¤½¤Î mutex ¤ò
118 ¥í¥Ã¥¯¤·¤¿²ó¿ô¤òµÏ¿¤¹¤ë¡£¤³¤Î mutex ¤¬¥¢¥ó¥í¥Ã¥¯¾õÂÖ¤ËÌá¤ë¤Ë¤Ï¡¢
120 .B "pthread_mutex_unlock"
121 Áàºî¤¬¼Â¹Ô¤µ¤ì¤Í¤Ð¤Ê¤é¤Ê¤¤¡£
123 .B "pthread_mutex_trylock"
125 .BR "pthread_mutex_lock"
126 ¤ÈƱÍͤ˿¶Éñ¤¦¤¬¡¢mutex ¤¬´û¤Ë¾¤Î¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ
127 (¤¢¤ë¤¤¤Ï¡¢¡Ö®¤¤¡× mutex ¤Î¾ì¹ç¡¢¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ)
128 ¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤ò¥Ö¥í¥Ã¥¯¤·¤Ê¤¤¡£
130 .B "pthread_mutex_trylock"
135 .B "pthread_mutex_unlock"
136 ¤Ï¡¢Í¿¤¨¤é¤ì¤¿ mutex ¤ò¥¢¥ó¥í¥Ã¥¯¤¹¤ë¡£
137 .BR "pthread_mutex_unlock"
138 ¤Î³«»Ï»þÅÀ¤Ç¡¢¤³¤Î mutex ¤Ï¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ë¤è¤ê¥í¥Ã¥¯¤µ¤ì
139 ½êͤµ¤ì¤Æ¤¤¤ë¤â¤Î¤È²¾Äꤵ¤ì¤ë¡£
140 mutex ¤¬¡Ö®¤¤¡×¼ïÊ̤Τâ¤Î¤Ê¤é¤Ð¡¢
141 .B "pthread_mutex_unlock"
142 ¤Ï¾ï¤Ë¤½¤ì¤ò¥¢¥ó¥í¥Ã¥¯¾õÂÖ¤ËÌ᤹¡£¤½¤ì¤¬¡ÖºÆµ¢Åª¤Ê¡×¼ïÊ̤ʤé¤Ð¡¢
143 mutex ¤Î¥í¥Ã¥¯·×¿ô(¤³¤Î mutex ¤ËÂФ·¤Æ
144 .B "pthread_mutex_lock"
145 Áàºî¤¬¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ç¼Â¹Ô¤µ¤ì¤¿²ó¿ô)
146 ¤ò°ì¤Ä¸º¤é¤·¡¢¤³¤Î·×¿ô¤¬¥¼¥í¤Ë¤Ê¤Ã¤¿»þ¤Ë¡¢½é¤á¤Æ mutex ¤¬
147 ¼ÂºÝ¤Ë¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤ë¡£
149 ¡Ö¥¨¥é¡¼¤ò¸¡ºº¤¹¤ë¡×mutex ¤ËÂФ·¤Æ¤Ï¡¢
150 .B "pthread_mutex_unlock"
151 ¤Ï¼Â¹Ô»þ¤Ë¼ÂºÝ¤Ë¡¢mutex ¤¬³«»Ï»þÅÀ¤Ç¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¤«¡¢
153 .BR "pthread_mutex_unlock"
154 ¤ò¸Æ¤ó¤Ç¤¤¤ë¤Î¤ÈƱ¤¸¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ¥í¥Ã¥¯¤µ¤ì¤¿¤«¤É¤¦¤«¡¢¤ò¸¡ºº¤¹¤ë¡£
155 ¤³¤ì¤é¤Î¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥¨¥é¡¼¥³¡¼¥É¤¬ÊÖ¤µ¤ì¡¢mutex ¤Ï
156 ÉÔÊѤΤޤޤˤµ¤ì¤ë¡£¡Ö®¤¤¡×mutex ¤È¡ÖºÆµ¢Åª¤Ê¡×mutex ¤Ï¤³¤Î¤è¤¦¤Ê
157 ¥Á¥§¥Ã¥¯¤ò¹Ô¤Ê¤ï¤Ê¤º¡¢¤è¤Ã¤Æ¡¢¥í¥Ã¥¯¤µ¤ì¤¿ mutex ¤ò½êͼ԰ʳ°¤Î
158 ¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ¥¢¥ó¥í¥Ã¥¯¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤·¤Æ¤¤¤ë¡£¤³¤ì¤Ï¡¢°Ü¿¢À¤Î
159 ¤Ê¤¤¿¶Éñ¤¤¤Ç¤¢¤ê¡¢¤³¤ì¤Ë°Í¸¤¹¤ë¤è¤¦¤Ê¤³¤È¤Ï¤¹¤Ù¤¤Ç¤Ê¤¤¡£
161 .B "pthread_mutex_destroy"
162 ¤Ï¡¢mutex ¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤·¡¢¤½¤ì¤¬ÊÝ»ý¤·¤Æ¤¤¤ë²ÄǽÀ¤Î¤¢¤ë
163 »ñ¸»¤ò³«Êü¤¹¤ë¡£mutex ¤Ï´Ø¿ô¤Î³«»Ï»þÅÀ¤Ç¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð
164 ¤Ê¤é¤Ê¤¤¡£LinuxThreads ¤Î¼ÂÁõ¤Ç¤Ï¡¢¤¤¤«¤Ê¤ë»ñ¸»¤â mutex ¥ª¥Ö¥¸¥§¥¯¥È¤Ë
166 .B "pthread_mutex_destroy"
167 ¤Ï¼ÂºÝ¤Î¤È¤³¤í¡¢mutex ¤¬¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¸¡ºº¤¹¤ë
168 °Ê³°¤Î¤³¤È¤Ï²¿¤â¤·¤Ê¤¤¡£
172 ¤¤¤«¤Ê¤ë mutex ´Ø¿ô¤â¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È¤Ç¤Ï¤Ê¤¤¡£
173 .BR "pthread_mutex_lock"
174 ¤Ç¤µ¤¨¤â¡¢¤½¤ì¤¬Ç¤°Õ¤Î»þ´Ö¥¹¥ì¥Ã¥É¤Î¼Â¹Ô¤òÄä»ß¤µ¤»¤¦¤ë¤È¤¤¤¦
175 »ö¼Â¤Ë¤â´Ø¤ï¤é¤º¡¢¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È¤Ç¤Ï¤Ê¤¤¡£¤³¤ì¤Ë¤è¤ê¡¢¼è¤ê¾Ã¤·
176 ¥Ý¥¤¥ó¥È¤Ë¤ª¤±¤ë mutex ¤Î¾õÂÖ¤Ïͽ¬²Äǽ¤È¤Ê¤ê¡¢¼è¤ê¾Ã¤·¥Ï¥ó¥É¥é¤¬¡¢
177 ¥¹¥ì¥Ã¥É¤Î¼Â¹ÔÄä»ß°ÊÁ°¤Ë¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤ëɬÍפΤ¢¤ë mutex ¤Þ¤µ¤Ë¤½¤ì
178 ¤Î¤ß¤ò¡¢Àµ³Î¤Ë¥¢¥ó¥í¥Ã¥¯¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤·¤Æ¤¤¤ë¡£¤³¤Î·ë²Ì¡¢ÃÙ±ä
179 ¼è¤ê¾Ã¤·¤òÍѤ¤¤ë¥¹¥ì¥Ã¥É¤Ï¡¢·è¤·¤Æ;·×¤Ê»þ´Ö mutex ¤ò½êͤ¹¤ë¤³¤È¤Ï¤Ê¤¤¡£
181 .SH "ÈóƱ´ü¥·¥°¥Ê¥ë¤ËÂФ¹¤ë°ÂÁ´À"
183 mutex ´Ø¿ô¤ÏÈóƱ´ü¥·¥°¥Ê¥ë¤ËÂФ·¤Æ°ÂÁ´¤Ç¤Ï¤Ê¤¤¡£¤³¤ì¤Î
184 °ÕÌ£¤¹¤ë¤È¤³¤í¤Ï¡¢¤½¤ì¤é¤Ï¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤«¤é¸Æ¤Ö¤Ù¤¤Ç¤Ï¤Ê¤¤¡¢
185 ¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ÆäË
186 .B "pthread_mutex_lock"
188 .B "pthread_mutex_unlock"
189 ¤Î¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤«¤é¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤ò¥Ç¥Ã¥É
190 ¥í¥Ã¥¯¤µ¤»¤ë¶²¤ì¤¬¤¢¤ë¡£
194 .B "pthread_mutex_init"
195 ¤Ï¡¢¾ï¤Ë 0 ¤òÊÖ¤¹¡£Â¾¤Î mutex ´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ì¤Ð 0 ¤òÊÖ¤·¡¢
196 ¥¨¥é¡¼¤Ç¤ÏÈó¥¼¥í¤Î¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹¡£
200 .B "pthread_mutex_lock"
201 ¤Ï¥¨¥é¡¼¤ÎºÝ¡¢¼¡¤Î¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹:
205 mutex ¤¬Å¬Àڤ˽é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
209 mutex ¤Ï´û¤Ë¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ë¤è¤ê¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¡£
210 (¡Ö¥¨¥é¡¼¸¡ºº¤ò¹Ô¤Ê¤¦¡× mutexes ¤Î¤ß)
213 .B "pthread_mutex_trylock"
214 ¤Ï¥¨¥é¡¼¤ÎºÝ¡¢¼¡¤Î¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹:
218 ¸½ºß¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç mutex ¤ò¼èÆÀ¤Ç¤¤Ê¤¤¡£
222 mutex ¤¬Å¬Àڤ˽é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
225 .B O"pthread_mutex_unlock"
226 ¤Ï¥¨¥é¡¼¤ÎºÝ¡¢¼¡¤Î¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹:
230 mutex ¤¬Å¬Àڤ˽é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
234 ¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ï mutex ¤ò½êͤ·¤Æ¤¤¤Ê¤¤¡£(¡Ö¥¨¥é¡¼¤ò¸¡ºº¤¹¤ë¡× mutex ¤Î¤ß)
237 .B "pthread_mutex_destroy"
238 ¤Ï¥¨¥é¡¼¤ÎºÝ¡¢¼¡¤Î¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹:
242 mutex ¤Ï¸½ºß¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¡£
246 Xavier Leroy <Xavier.Leroy@inria.fr>
249 .BR "pthread_mutexattr_init" (3),
250 .BR "pthread_mutexattr_setkind_np" (3),
251 .BR "pthread_cancel" (3).
257 ¤Ï mutex ¤Ë¤è¤ê¼¡¤Î¤è¤¦¤ËÊݸ¤ì¤ë:
264 pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
272 ¤Ø¤Î¥¢¥¯¥»¥¹¤È¤½¤ÎÊѹ¹¤Ï
273 .B "pthread_mutex_lock"
275 .B "pthread_mutex_unlock"
276 ¤Ë¤è¤Ã¤Æ¡¢¼¡¤Î¤è¤¦¤Ë°Ï¤Þ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤:
282 pthread_mutex_lock(&mut);
284 pthread_mutex_unlock(&mut);
290 [ÌõÃí] glibc-linuxthreads ¤ÎºÇ¿·¤Î¥É¥¥å¥á¥ó¥È¤Ï Texinfo ·Á¼°¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë¡£
291 ¾å¤Îµ½Ò¤Ï glibc-linuxthreads-2.2 °Ê¹ß¤Ç¤ÏÀµ¤·¤¯¤Ê¤¤¡£
292 °Ê²¼¤Ï glibc-linuxthreads-2.3.1 ¤Î Texinfo ¥Õ¥¡¥¤¥ë¤«¤é¤Î°úÍѤǤ¢¤ë¡£
293 ¼ïÊÌ (kind) ¤¬·¿ (type) ¤ËÊѹ¹¤µ¤ì¤Æ¤¤¤ë¡£
295 LinuxThreads ¼ÂÁõ¤Ï¤¿¤À 1 ¤Ä¤Î mutex °À¤ËÂбþ¤·¤Æ¤¤¤ë¡£
296 ¤½¤ì¤Ï mutex ·¿ (mutex type) ¤Ç¡¢
297 ¡Ö®¤¤ (fast) ¡×¡¢¡ÖºÆµ¢Åª¤Ê (recursive) ¡×¡¢
298 ¡Ö»þ¹ï¾ðÊó¤Ä¤ (timed) ¡×¡¢¡Ö¥¨¥é¡¼¸¡ºº¤ò¹Ô¤Ê¤¦ (error checking) ¡×¤Î
301 ¤¢¤ë¥¹¥ì¥Ã¥É¤¬¼«Ê¬¼«¿È¤Ç¤¹¤Ç¤ËÊÝ»ý¤·¤Æ¤¤¤ë mutex ¤ò¥í¥Ã¥¯¤Ç¤¤ë¤«¤É¤¦¤«¤ò
303 ¥Ç¥Õ¥©¥ë¥È¤Î mutex ·¿¤Ï¡Ö»þ¹ï¾ðÊó¤Ä¤ (timed) ¡×¤Ç¤¢¤ë¡£
307 .B "PTHREAD_MUTEX_INITIALIZER"
308 ( »þ¹ï¾ðÊó¤Ä¤ (timed) mutex ÍÑ ) ¡¢
309 .B "PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP"
310 ( ºÆµ¢Åª¤Ê (recursive) mutex ÍÑ ) ¡¢
311 .B "PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP"
312 ( ®¤¤ (fast) mutex ÍÑ ) ¡¢
313 .B "PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP"
314 ( ¥¨¥é¡¼¸¡ºº¤ò¹Ô¤Ê¤¦ (error checking) mutex ÍÑ ) ¤òÍѤ¤¤Æ
315 ÀÅŪ¤Ë½é´ü²½¤¹¤ë¤³¤È¤â¤Ç¤¤ë¡£