OSDN Git Service

Import translated manuals from JM CVS Repository.
[linuxjm/jm.git] / manual / glibc-linuxthreads / release / man3 / pthread_mutex_init.3
1 .\"   Copyright (C) 1996-1999 Free Software Foundation, Inc.
2 .\"
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.
6 .\"
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.
11 .\"
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.
16 .\"
17 .\" Copyright (C) 1996 Xavier Leroy.
18 .\" 
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.
25 .\"
26 .\"WORD:    mutual exclusion    ÇÓ¾À©¸æ
27 .\"WORD:    critical section    ¥¯¥ê¥Æ¥£¥«¥ë¥»¥¯¥·¥ç¥ó
28 .\"
29 .TH PTHREAD_MUTEX 3 LinuxThreads
30
31
32 .SH "̾Á°"
33 pthread_mutex_init, pthread_mutex_lock, pthread_mutex_trylock, 
34 pthread_mutex_unlock, pthread_mutex_destroy \- mutex ¤ÎÁàºî
35
36 .SH ½ñ¼°
37 .B #include <pthread.h>
38
39 .BI "pthread_mutex_t " fastmutex " = PTHREAD_MUTEX_INITIALIZER;"
40
41 .BI "pthread_mutex_t " recmutex " = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;"
42
43 .BI "pthread_mutex_t " errchkmutex " = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;"
44
45 .BI "int pthread_mutex_init(pthread_mutex_t *" mutex ", const pthread_mutexattr_t *" mutexattr ");"
46
47 .BI "int pthread_mutex_lock(pthread_mutex_t *" mutex "));"
48
49 .BI "int pthread_mutex_trylock(pthread_mutex_t *" mutex ");"
50
51 .BI "int pthread_mutex_unlock(pthread_mutex_t *" mutex ");"
52
53 .BI "int pthread_mutex_destroy(pthread_mutex_t *" mutex ");"
54
55 .SH "ÀâÌÀ"
56 mutex ¤Ï¡¢ÇÓ¾À©¸æ (MUTual EXclusion) ¤Î»ÅÁȤߤǤ¢¤ê¡¢¶¦Í­¥Ç¡¼¥¿¤ÎƱ»þ¹¹¿·
57 ¤«¤é¤ÎÊݸ¥¯¥ê¥Æ¥£¥«¥ë¥»¥¯¥·¥ç¥ó (critical section) ¤ä
58 ¥â¥Ë¥¿¤Î¼ÂÁõ¤Ê¤É¤Ë»È¤ï¤ì¤ë¡£
59
60 mutex ¤ÏÆó¤Ä¤Î¾õÂÖ¤ò¼è¤ê¤¦¤ë¡£¤½¤ì¤Ï¡¢¥¢¥ó¥í¥Ã¥¯¾õÂÖ(¤É¤Î¥¹¥ì¥Ã¥É¤Ë¤â
61 ÊÝÍ­¤µ¤ì¤Æ¤¤¤Ê¤¤)¤È¥í¥Ã¥¯¾õÂÖ(°ì¤Ä¤Î¥¹¥ì¥Ã¥É¤ËÊÝÍ­¤µ¤ì¤Æ¤¤¤ë)¤Ç¤¢¤ë¡£
62 Æó¤Ä¤Î°Û¤Ê¤ë¥¹¥ì¥Ã¥É¤¬Æ±»þ¤Ë°ì¤Ä¤Î mutex ¤òÊÝÍ­¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡£´û¤Ë¾¤Î
63 ¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ¥í¥Ã¥¯¤µ¤ì¤¿ mutex ¤ò¥í¥Ã¥¯¤·¤è¤¦¤È¤¹¤ë¥¹¥ì¥Ã¥É¤Ï¡¢ÊÝÍ­
64 ¦¤Î¥¹¥ì¥Ã¥É¤¬Àè¤Ë¤½¤Î mutex ¤ò¥¢¥ó¥í¥Ã¥¯¤¹¤ë¤Þ¤Ç¼Â¹Ô¤òÄä»ß¤µ¤»¤é¤ì¤ë¡£
65
66 .B "pthread_mutex_init"
67 ¤Ï
68 .I "mutex"
69 ¤¬»Ø¤¹ mutex ¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢
70 .IR "mutexattr"
71 ¤Ç»ØÄꤵ¤ì¤¿ mutex Â°À­¥ª¥Ö¥¸¥§¥¯¥È¤Ë½¾¤Ã¤Æ½é´ü²½¤¹¤ë¡£
72 .I "mutexattr"
73 ¤¬
74 .BR "NULL" ,
75 ¤Ê¤é¤Ð¡¢¥Ç¥Õ¥©¥ë¥È¤Î°À­¤¬¤³¤Î¤«¤ï¤ê¤Ë»È¤ï¤ì¤ë¡£
76
77 LinuxThreads ¤Î¼ÂÁõ¤Ï¤¿¤À°ì¤Ä¤Î°À­
78 .IR "mutex kind"
79 ¤À¤±¤ËÂбþ¤·¤Æ¤¤¤ë¡£¤³¤Î°À­¤Ï¡¢¡Ö®¤¤¡×(``fast'')¡¢
80 ¡ÖºÆµ¢Åª¤Ê¡×(``recursive'')¡¢¤Þ¤¿¤Ï
81 ¡Ö¥¨¥é¡¼¸¡ºº¤ò¹Ô¤Ê¤¦¡×(``error checking'')¤Î¤¤¤º¤ì¤«¤ò
82 »ØÄꤹ¤ë¤â¤Î¤Ç¤¢¤ë¡£
83 mutex ¤Î¼ïÊÌ(kind)¤Ï¡¢¤½¤Î mutex ¤ò´û¤ËÊÝÍ­¤·¤Æ¤¤¤ë¥¹¥ì¥Ã¥É¤¬¡¢
84 ¤½¤ì¤òºÆ¤Ó¥í¥Ã¥¯¤Ç¤­¤ë¤«¤É¤¦¤«¤ò·èÄꤹ¤ë¡£
85 ¥Ç¥Õ¥©¥ë¥È¤Î¼ïÊ̤ϡÖ®¤¤¡×¤Ç¤¢¤ë¡£mutex Â°À­¤Î¤è¤ê¾Ü¤·¤¤¾ðÊó¤Ï¡¢
86 .BR "pthread_mutexattr_init" (3)
87 ¤ò¸«¤è¡£
88
89 .B "pthread_mutex_t"
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 ¤Ç¡¢ÀÅŪ¤Ë½é´ü²½¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£
97
98 .B "pthread_mutex_lock"
99 ¤Ï¡¢Í¿¤¨¤é¤ì¤¿ mutex ¤ò¥í¥Ã¥¯¤¹¤ë¡£mutex ¤¬¸½ºß¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢
100 ¤½¤ì¤Ï¥í¥Ã¥¯¤µ¤ì¡¢¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ½êÍ­¤µ¤ì¤ë¡£¤³¤Î¾ì¹ç
101 .B "pthread_mutex_lock"
102 ¤Ïľ¤Á¤ËÊ֤롣mutex ¤¬Â¾¤Î¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ´û¤Ë¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤¿¤Î¤Ê¤é¤Ð¡¢
103 .B "pthread_mutex_lock"
104 ¤Ï mutex ¤¬¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤ë¤Þ¤Ç¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Î¼Â¹Ô¤òÄä»ß¤µ¤»¤ë¡£
105
106 mutex ¤¬¸Æ¤Ó½Ð¤·Â¦¤Î¥¹¥ì¥Ã¥É¤Ë¤è¤ê´û¤Ë¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢
107 .B "pthread_mutex_lock"
108 ¤Î¿¶Éñ¤¤¤Ï¡¢mutex ¤Î¼ïÊ̤˰͸¤¹¤ë¡£mutex ¤Î¼ïÊ̤¬¡Ö®¤¤¡×¤Ç¤¢¤ì¤Ð¡¢
109 ¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ï mutex ¤¬¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤ë¤Þ¤Ç¼Â¹Ô¤òÄä»ß¤¹¤ë¡£
110 ½¾¤Ã¤Æ»ö¼Â¾å¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Î¥Ç¥Ã¥É¥í¥Ã¥¯¤ò°ú¤­µ¯¤³¤¹¡£
111 mutex ¤Î¼ïÊ̤¬¡Ö¥¨¥é¡¼¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡×¤Ç¤¢¤ì¤Ð¡¢
112 .B "pthread_mutex_lock"
113 ¤Ï¥¨¥é¡¼¥³¡¼¥É
114 .BR "EDEADLK"
115 ¤È¤È¤â¤Ëľ¤Á¤ËÌá¤ë¡£mutex ¤Î¼ïÊ̤¬¡ÖºÆµ¢Åª¡×¤Ê¤é¤Ð¡¢
116 .B "pthread_mutex_lock"
117 ¤ÏÀ®¸ù¤·Ä¾¤Á¤ËÌá¤ë¡£¤³¤ÎºÝ¡¢¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤¬¡¢¤½¤Î mutex ¤ò
118 ¥í¥Ã¥¯¤·¤¿²ó¿ô¤òµ­Ï¿¤¹¤ë¡£¤³¤Î mutex ¤¬¥¢¥ó¥í¥Ã¥¯¾õÂÖ¤ËÌá¤ë¤Ë¤Ï¡¢
119 Ʊ¿ô¤Î
120 .B "pthread_mutex_unlock"
121 Áàºî¤¬¼Â¹Ô¤µ¤ì¤Í¤Ð¤Ê¤é¤Ê¤¤¡£
122
123 .B "pthread_mutex_trylock"
124 ¤Ï
125 .BR "pthread_mutex_lock"
126 ¤ÈƱÍͤ˿¶Éñ¤¦¤¬¡¢mutex ¤¬´û¤Ë¾¤Î¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ
127 (¤¢¤ë¤¤¤Ï¡¢¡Ö®¤¤¡× mutex ¤Î¾ì¹ç¡¢¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ)
128 ¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤ò¥Ö¥í¥Ã¥¯¤·¤Ê¤¤¡£
129 ¤«¤ï¤ê¤Ë¡¢
130 .B "pthread_mutex_trylock"
131 ¤Ï¥¨¥é¡¼¥³¡¼¥É
132 .BR "EBUSY"
133 ¤Çľ¤Á¤ËÌá¤ë¡£
134
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 ¼ÂºÝ¤Ë¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤ë¡£
148
149 ¡Ö¥¨¥é¡¼¤ò¸¡ºº¤¹¤ë¡×mutex ¤ËÂФ·¤Æ¤Ï¡¢
150 .B "pthread_mutex_unlock"
151 ¤Ï¼Â¹Ô»þ¤Ë¼ÂºÝ¤Ë¡¢mutex ¤¬³«»Ï»þÅÀ¤Ç¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¤«¡¢
152 ¤Þ¤¿¡¢¤½¤ì¤Ï¸½ºß
153 .BR "pthread_mutex_unlock"
154 ¤ò¸Æ¤ó¤Ç¤¤¤ë¤Î¤ÈƱ¤¸¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ¥í¥Ã¥¯¤µ¤ì¤¿¤«¤É¤¦¤«¡¢¤ò¸¡ºº¤¹¤ë¡£
155 ¤³¤ì¤é¤Î¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥¨¥é¡¼¥³¡¼¥É¤¬ÊÖ¤µ¤ì¡¢mutex ¤Ï
156 ÉÔÊѤΤޤޤˤµ¤ì¤ë¡£¡Ö®¤¤¡×mutex ¤È¡ÖºÆµ¢Åª¤Ê¡×mutex ¤Ï¤³¤Î¤è¤¦¤Ê
157 ¥Á¥§¥Ã¥¯¤ò¹Ô¤Ê¤ï¤Ê¤º¡¢¤è¤Ã¤Æ¡¢¥í¥Ã¥¯¤µ¤ì¤¿ mutex ¤ò½êÍ­¼Ô°Ê³°¤Î
158 ¥¹¥ì¥Ã¥É¤Ë¤è¤Ã¤Æ¥¢¥ó¥í¥Ã¥¯¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤·¤Æ¤¤¤ë¡£¤³¤ì¤Ï¡¢°Ü¿¢À­¤Î
159 ¤Ê¤¤¿¶Éñ¤¤¤Ç¤¢¤ê¡¢¤³¤ì¤Ë°Í¸¤¹¤ë¤è¤¦¤Ê¤³¤È¤Ï¤¹¤Ù¤­¤Ç¤Ê¤¤¡£
160
161 .B "pthread_mutex_destroy"
162 ¤Ï¡¢mutex ¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤·¡¢¤½¤ì¤¬ÊÝ»ý¤·¤Æ¤¤¤ë²ÄǽÀ­¤Î¤¢¤ë
163 »ñ¸»¤ò³«Êü¤¹¤ë¡£mutex ¤Ï´Ø¿ô¤Î³«»Ï»þÅÀ¤Ç¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð
164 ¤Ê¤é¤Ê¤¤¡£LinuxThreads ¤Î¼ÂÁõ¤Ç¤Ï¡¢¤¤¤«¤Ê¤ë»ñ¸»¤â mutex ¥ª¥Ö¥¸¥§¥¯¥È¤Ë
165 Éտ路¤Æ¤¤¤Ê¤¤¡£¸Î¤Ë
166 .B "pthread_mutex_destroy"
167 ¤Ï¼ÂºÝ¤Î¤È¤³¤í¡¢mutex ¤¬¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¸¡ºº¤¹¤ë
168 °Ê³°¤Î¤³¤È¤Ï²¿¤â¤·¤Ê¤¤¡£
169
170 .SH "¼è¤ê¾Ã¤·"
171
172 ¤¤¤«¤Ê¤ë mutex ´Ø¿ô¤â¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È¤Ç¤Ï¤Ê¤¤¡£
173 .BR "pthread_mutex_lock"
174 ¤Ç¤µ¤¨¤â¡¢¤½¤ì¤¬Ç¤°Õ¤Î»þ´Ö¥¹¥ì¥Ã¥É¤Î¼Â¹Ô¤òÄä»ß¤µ¤»¤¦¤ë¤È¤¤¤¦
175 »ö¼Â¤Ë¤â´Ø¤ï¤é¤º¡¢¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È¤Ç¤Ï¤Ê¤¤¡£¤³¤ì¤Ë¤è¤ê¡¢¼è¤ê¾Ã¤·
176 ¥Ý¥¤¥ó¥È¤Ë¤ª¤±¤ë mutex ¤Î¾õÂÖ¤Ïͽ¬²Äǽ¤È¤Ê¤ê¡¢¼è¤ê¾Ã¤·¥Ï¥ó¥É¥é¤¬¡¢
177 ¥¹¥ì¥Ã¥É¤Î¼Â¹ÔÄä»ß°ÊÁ°¤Ë¥¢¥ó¥í¥Ã¥¯¤µ¤ì¤ëɬÍפΤ¢¤ë mutex ¤Þ¤µ¤Ë¤½¤ì
178 ¤Î¤ß¤ò¡¢Àµ³Î¤Ë¥¢¥ó¥í¥Ã¥¯¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤·¤Æ¤¤¤ë¡£¤³¤Î·ë²Ì¡¢ÃÙ±ä
179 ¼è¤ê¾Ã¤·¤òÍѤ¤¤ë¥¹¥ì¥Ã¥É¤Ï¡¢·è¤·¤Æ;·×¤Ê»þ´Ö mutex ¤ò½êÍ­¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡£
180
181 .SH "ÈóƱ´ü¥·¥°¥Ê¥ë¤ËÂФ¹¤ë°ÂÁ´À­"
182
183 mutex ´Ø¿ô¤ÏÈóƱ´ü¥·¥°¥Ê¥ë¤ËÂФ·¤Æ°ÂÁ´¤Ç¤Ï¤Ê¤¤¡£¤³¤ì¤Î
184 °ÕÌ£¤¹¤ë¤È¤³¤í¤Ï¡¢¤½¤ì¤é¤Ï¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤«¤é¸Æ¤Ö¤Ù¤­¤Ç¤Ï¤Ê¤¤¡¢
185 ¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ÆäË
186 .B "pthread_mutex_lock"
187 ¤Þ¤¿¤Ï
188 .B "pthread_mutex_unlock"
189 ¤Î¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤«¤é¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤ò¥Ç¥Ã¥É
190 ¥í¥Ã¥¯¤µ¤»¤ë¶²¤ì¤¬¤¢¤ë¡£
191
192 .SH "ÊÖ¤êÃÍ"
193
194 .B "pthread_mutex_init"
195 ¤Ï¡¢¾ï¤Ë 0 ¤òÊÖ¤¹¡£Â¾¤Î mutex ´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ì¤Ð 0 ¤òÊÖ¤·¡¢
196 ¥¨¥é¡¼¤Ç¤ÏÈó¥¼¥í¤Î¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹¡£
197
198 .SH "¥¨¥é¡¼"
199
200 .B "pthread_mutex_lock"
201 ¤Ï¥¨¥é¡¼¤ÎºÝ¡¢¼¡¤Î¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹:
202 .RS
203 .TP
204 .B "EINVAL"
205 mutex ¤¬Å¬Àڤ˽é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
206
207 .TP
208 .B "EDEADLK"
209 mutex ¤Ï´û¤Ë¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ë¤è¤ê¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¡£
210 (¡Ö¥¨¥é¡¼¸¡ºº¤ò¹Ô¤Ê¤¦¡× mutexes ¤Î¤ß)
211 .RE
212
213 .B "pthread_mutex_trylock"
214 ¤Ï¥¨¥é¡¼¤ÎºÝ¡¢¼¡¤Î¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹:
215 .RS
216 .TP
217 .B "EBUSY"
218 ¸½ºß¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç mutex ¤ò¼èÆÀ¤Ç¤­¤Ê¤¤¡£
219
220 .TP
221 .B "EINVAL"
222 mutex ¤¬Å¬Àڤ˽é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
223 .RE
224
225 .B O"pthread_mutex_unlock"
226 ¤Ï¥¨¥é¡¼¤ÎºÝ¡¢¼¡¤Î¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹:
227 .RS
228 .TP
229 .B "EINVAL"
230 mutex ¤¬Å¬Àڤ˽é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
231
232 .TP
233 .B "EPERM"
234 ¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Ï mutex ¤ò½êÍ­¤·¤Æ¤¤¤Ê¤¤¡£(¡Ö¥¨¥é¡¼¤ò¸¡ºº¤¹¤ë¡× mutex ¤Î¤ß)
235 .RE
236
237 .B "pthread_mutex_destroy"
238 ¤Ï¥¨¥é¡¼¤ÎºÝ¡¢¼¡¤Î¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹:
239 .RS
240 .TP
241 .B "EBUSY"
242 mutex ¤Ï¸½ºß¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¡£
243 .RE
244
245 .SH "Ãø¼Ô"
246 Xavier Leroy <Xavier.Leroy@inria.fr>
247
248 .SH "´ØÏ¢¹àÌÜ"
249 .BR "pthread_mutexattr_init" (3),
250 .BR "pthread_mutexattr_setkind_np" (3),
251 .BR "pthread_cancel" (3).
252
253 .SH "Îã"
254
255 ¶¦Í­¤µ¤ì¤ëÂç°èÊÑ¿ô
256 .I "x"
257 ¤Ï mutex ¤Ë¤è¤ê¼¡¤Î¤è¤¦¤ËÊݸ¤ì¤ë:
258
259 .RS
260 .ft 3
261 .nf
262 .sp
263 int x;
264 pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
265 .ft
266 .LP
267 .RE
268 .fi
269
270 Á´¤Æ¤Î
271 .I "x"
272 ¤Ø¤Î¥¢¥¯¥»¥¹¤È¤½¤ÎÊѹ¹¤Ï
273 .B "pthread_mutex_lock"
274 ¤È
275 .B "pthread_mutex_unlock"
276 ¤Ë¤è¤Ã¤Æ¡¢¼¡¤Î¤è¤¦¤Ë°Ï¤Þ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤:
277
278 .RS
279 .ft 3
280 .nf
281 .sp
282 pthread_mutex_lock(&mut);
283 /* x ¤ÎÁàºî */
284 pthread_mutex_unlock(&mut);
285 .ft
286 .LP
287 .RE
288 .fi
289
290 [ÌõÃí] glibc-linuxthreads ¤ÎºÇ¿·¤Î¥É¥­¥å¥á¥ó¥È¤Ï Texinfo ·Á¼°¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë¡£
291 ¾å¤Îµ­½Ò¤Ï glibc-linuxthreads-2.2 °Ê¹ß¤Ç¤ÏÀµ¤·¤¯¤Ê¤¤¡£
292 °Ê²¼¤Ï glibc-linuxthreads-2.3.1 ¤Î Texinfo ¥Õ¥¡¥¤¥ë¤«¤é¤Î°úÍѤǤ¢¤ë¡£
293 ¼ïÊÌ (kind) ¤¬·¿ (type) ¤ËÊѹ¹¤µ¤ì¤Æ¤¤¤ë¡£
294
295 LinuxThreads ¼ÂÁõ¤Ï¤¿¤À 1 ¤Ä¤Î mutex Â°À­¤ËÂбþ¤·¤Æ¤¤¤ë¡£
296 ¤½¤ì¤Ï mutex ·¿ (mutex type) ¤Ç¡¢
297 ¡Ö®¤¤ (fast) ¡×¡¢¡ÖºÆµ¢Åª¤Ê (recursive) ¡×¡¢
298 ¡Ö»þ¹ï¾ðÊó¤Ä¤­ (timed) ¡×¡¢¡Ö¥¨¥é¡¼¸¡ºº¤ò¹Ô¤Ê¤¦ (error checking) ¡×¤Î
299 ¤¤¤º¤ì¤«¤Ç¤¢¤ë¡£
300 mutex ·¿¤Ï¡¢
301 ¤¢¤ë¥¹¥ì¥Ã¥É¤¬¼«Ê¬¼«¿È¤Ç¤¹¤Ç¤ËÊÝ»ý¤·¤Æ¤¤¤ë mutex ¤ò¥í¥Ã¥¯¤Ç¤­¤ë¤«¤É¤¦¤«¤ò
302 ·èÄꤹ¤ë¡£
303 ¥Ç¥Õ¥©¥ë¥È¤Î mutex ·¿¤Ï¡Ö»þ¹ï¾ðÊó¤Ä¤­ (timed) ¡×¤Ç¤¢¤ë¡£
304
305 .B pthread_mutex_t
306 ·¿¤ÎÊÑ¿ô¤Ï¡¢Äê¿ô
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 ÀÅŪ¤Ë½é´ü²½¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£