2 .\" Copyright (c) 2005 by Michael Kerrisk <mtk.manpages@gmail.com>
4 .\" Permission is granted to make and distribute verbatim copies of this
5 .\" manual provided the copyright notice and this permission notice are
6 .\" preserved on all copies.
8 .\" Permission is granted to copy and distribute modified versions of this
9 .\" manual under the conditions for verbatim copying, provided that the
10 .\" entire resulting derived work is distributed under the terms of a
11 .\" permission notice identical to this one.
13 .\" Since the Linux kernel and libraries are constantly changing, this
14 .\" manual page may be incorrect or out-of-date. The author(s) assume no
15 .\" responsibility for errors or omissions, or for damages resulting from
16 .\" the use of the information contained herein. The author(s) may not
17 .\" have taken the same level of care in the production of this manual,
18 .\" which is licensed free of charge, as they might when working
21 .\" Formatted or processed versions of this manual, if unaccompanied by
22 .\" the source, must acknowledge the copyright and authors of this work.
24 .\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved.
25 .\" Translated 2005-09-06, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
26 .\" Updated 2006-04-15, Akihiro MOTOKI, LDP v2.29
27 .\" Updated 2007-01-05, Akihiro MOTOKI, LDP v2.43
28 .\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05
29 .\" Updated 2008-11-05, Akihiro MOTOKI, LDP v3.12
30 .\" Updated 2008-11-09, Akihiro MOTOKI, LDP v3.13
31 .\" Updated 2008-12-26, Akihiro MOTOKI, LDP v3.14
33 .\"WORD: manager thread ´ÉÍý¥¹¥ì¥Ã¥É
34 .\"WORD: thread group ¥¹¥ì¥Ã¥É¡¦¥°¥ë¡¼¥×
35 .\"WORD: real-time signal ¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë
36 .\"WORD: non-conformant ɸ½àÈó½àµò¤Î
37 .\"WORD: alternate signal stack ÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯
39 .TH PTHREADS 7 2008-11-18 "Linux" "Linux Programmer's Manual"
41 pthreads \- POSIX ¥¹¥ì¥Ã¥É
43 POSIX.1 ¤Ï¡¢°ìÈÌ¤Ë POSIX ¥¹¥ì¥Ã¥É¤ä Pthreads ¤È¤·¤ÆÃΤé¤ì¤ë
44 ¥¹¥ì¥Ã¥É¡¦¥×¥í¥°¥é¥ß¥ó¥°¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹·² (´Ø¿ô¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë)
45 ¤òµ¬Äꤷ¤Æ¤¤¤ë¡£°ì¤Ä¤Î¥×¥í¥»¥¹¤ÏÊ£¿ô¤Î¥¹¥ì¥Ã¥É¤ò»ý¤Ä¤³¤È¤¬¤Ç¤¡¢
46 Á´¤Æ¤Î¥¹¥ì¥Ã¥É¤ÏƱ¤¸¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¡£
47 ¤³¤ì¤é¤Î¥¹¥ì¥Ã¥É¤ÏƱ¤¸Âç°è¥á¥â¥ê (¥Ç¡¼¥¿¤È¥Ò¡¼¥×Îΰè) ¤ò¶¦Í¤¹¤ë¤¬¡¢
48 ³Æ¥¹¥ì¥Ã¥É¤Ï¼«Ê¬ÀìÍѤΥ¹¥¿¥Ã¥¯ (¼«Æ°ÊÑ¿ô) ¤ò»ý¤Ä¡£
50 POSIX.1 ¤Ï¥¹¥ì¥Ã¥É´Ö¤Ç¤É¤Î¤è¤¦¤Ê°À¤ò¶¦Í¤¹¤ë¤«¤Ë¤Ä¤¤¤Æ¤âÄê¤á¤Æ¤¤¤ë
51 (¤Ä¤Þ¤ê¡¢¤³¤ì¤é¤Î°À¤Ï¥¹¥ì¥Ã¥Éñ°Ì¤Ç¤Ï¤Ê¤¯¥×¥í¥»¥¹Á´ÂΤǶ¦Ä̤Ǥ¢¤ë):
57 ¥×¥í¥»¥¹¥°¥ë¡¼¥× ID ¤È¥»¥Ã¥·¥ç¥ó ID
61 ¥æ¡¼¥¶ ID ¤È¥°¥ë¡¼¥× ID
63 ¥ª¡¼¥×¥ó¤¹¤ë¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿
71 ¥Õ¥¡¥¤¥ë¥â¡¼¥ÉºîÀ®¥Þ¥¹¥¯
74 ¥«¥ì¥ó¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê
76 ¤È¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê
82 .RB ( timer_create (2))
85 .RB ( setpriority (2))
96 ¥¹¥¿¥Ã¥¯¤Ë¤Ä¤¤¤Æ¤â¡¢POSIX.1 ¤Ï¤É¤Î¤è¤¦¤Ê°À¤¬
97 ¸Ä¡¹¤Î¥¹¥ì¥Ã¥É¤ÇÆÈΩ¤Ë´ÉÍý¤µ¤ì¤ë¤«¤òµ¬Äꤷ¤Æ¤¤¤ë:
104 .RB ( pthread_sigmask (3))
110 .RB ( sigaltstack (2))
112 ¥ê¥¢¥ë¥¿¥¤¥à¡¦¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤Î¥Ý¥ê¥·¡¼¤ÈÍ¥ÀèÅÙ
113 .RB ( sched_setscheduler (2)
115 .BR sched_setparam (2))
117 °Ê²¼¤Î Linux ÆÃͤε¡Ç½¤â¥¹¥ì¥Ã¥Éñ°Ì¤Ç¤¢¤ë:
120 .RB ( capabilities (7)
123 CPU affinity (¿ÆÏÂÅÙ)
124 .RB ( sched_setaffinity (2))
125 .SS "pthreads ´Ø¿ô¤ÎÊÖ¤êÃÍ"
126 ¤Û¤È¤ó¤É¤Î pthreads ´Ø¿ô¤ÏÀ®¸ù¤¹¤ë¤È 0 ¤òÊÖ¤·¡¢
127 ¼ºÇÔ¤·¤¿¾ì¹ç¥¨¥é¡¼ÈÖ¹æ¤òÊÖ¤¹¡£
130 ¤ò¥»¥Ã¥È¤·¤Ê¤¤ÅÀ¤ËÃí°Õ¤¹¤ë¤³¤È¡£
132 ¥¨¥é¡¼¤òÊÖ¤¹²ÄǽÀ¤Î¤¢¤ë pthreads ´Ø¿ô¤¬¥¨¥é¡¼
134 ¤Ç¼ºÇÔ¤¹¤ë¤³¤È¤Ï·è¤·¤Æ¤Ê¤¤¤Èµ¬Äꤷ¤Æ¤¤¤ë¡£
136 ¤¢¤ë¥×¥í¥»¥¹Æâ¤Î³Æ¥¹¥ì¥Ã¥É¤Ï
138 ·¿¤Î) °ì°Õ¤Ê¥¹¥ì¥Ã¥É¼±Ê̻Ҥò»ý¤Ä¡£
140 .BR pthread_create (3)
141 ¤Î¸Æ¤Ó½Ð¤·¸µ¤ËÊÖ¤µ¤ì¤ë¡£¤Þ¤¿¡¢¥¹¥ì¥Ã¥É¤Ï¼«¿È¤Î¥¹¥ì¥Ã¥É¼±Ê̻Ҥò
144 ¥¹¥ì¥Ã¥É ID ¤Î°ì°ÕÀ¤¬Êݾڤµ¤ì¤ë¤Î¤Ï¡¢°ì¤Ä¤Î¥×¥í¥»¥¹Æâ¤Ë¤ª¤¤¤Æ¤Î¤ß¤Ç¤¢¤ë¡£
145 ½ªÎ»¤·¤¿¥¹¥ì¥Ã¥É¤¬ join ¤µ¤ì¤¿¸å¤Ç¤Ï¡¢¥¹¥ì¥Ã¥É ID ¤ÏºÆÍøÍѤµ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£
146 ¥¹¥ì¥Ã¥É ID ¤ò°ú¤¿ô¤Ë¼è¤ëÁ´¤Æ¤Î¥¹¥ì¥Ã¥É´Ø¿ô¤Ë¤ª¤¤¤Æ¡¢
147 ¤½¤Î ID ¤Ï¸Æ¤Ó½Ð¤·¸µ¤ÈƱ¤¸¥×¥í¥»¥¹Æâ¤Î°ì¤Ä¤Î¥¹¥ì¥Ã¥É¤ò»²¾È¤¹¤ë¡£
148 .SS "¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ê´Ø¿ô"
149 ¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ê´Ø¿ô¤Ï¡¢Ê£¿ô¤Î¥¹¥ì¥Ã¥É¤«¤éƱ»þ¤Ë¸Æ¤Ó½Ð¤·¤Æ¤â°ÂÁ´¤Ê
150 (¤¹¤Ê¤ï¤Á¡¢Æ±»þ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤¿¤«¤Ë´Ø¤ï¤é¤º¡¢Æ±¤¸·ë²Ì¤òÊÖ¤¹) ´Ø¿ô¤Î¤³¤È¤Ç¤¢¤ë¡£
152 POSIX.1-2001 ¤È POSIX.1-2008¤Ç¤Ï¡¢°ìÉô¤ÎÎã³°¤ò½ü¤¡¢
153 ɸ½à¤Çµ¬Äꤵ¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î´Ø¿ô¤¬¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ç¤¢¤ë¤³¤È¤òÍ׵ᤷ¤Æ¤¤¤ë¡£
154 °Ê²¼¤Î´Ø¿ô¤¬Îã³°¤Ç¤¢¤ë¡£
162 ctermid() (NULL ¤Ç¤Ê¤¤°ú¤¿ô¤òÅϤµ¤ì¤¿¾ì¹ç)
176 ecvt() [POSIX.1-2001 ¤Î¤ß (POSIX.1-2008 ¤Çºï½ü¤µ¤ì¤¿)]
181 fcvt() [POSIX.1-2001 ¤Î¤ß (POSIX.1-2008 ¤Çºï½ü¤µ¤ì¤¿)]
183 gcvt() [POSIX.1-2001 ¤Î¤ß (POSIX.1-2008 ¤Çºï½ü¤µ¤ì¤¿)]
191 gethostbyaddr() [POSIX.1-2001 ¤Î¤ß (POSIX.1-2008 ¤Çºï½ü¤µ¤ì¤¿)]
192 gethostbyname() [POSIX.1-2001 ¤Î¤ß (POSIX.1-2008 ¤Çºï½ü¤µ¤ì¤¿)]
239 strsignal() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
241 system() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
242 tmpnam() (NULL ¤Ç¤Ê¤¤°ú¤¿ô¤òÅϤµ¤ì¤¿¾ì¹ç)
245 wcrtomb() (ºÇ¸å¤Î°ú¤¿ô¤¬ NULL ¤Î¾ì¹ç)
246 wcsrtombs() (ºÇ¸å¤Î°ú¤¿ô¤¬ NULL ¤Î¾ì¹ç)
251 .SS ¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È (cancellation points)
252 POSIX.1 ¤Îµ¬Äê¤Ç¤Ï¡¢ÆÃÄê¤Î´Ø¿ô¤Ï¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢
253 ¾¤ÎÆÃÄê¤Î´Ø¿ô¤Ï¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È¤Ç¤¢¤Ã¤Æ¤â¤è¤¤¤È¤µ¤ì¤Æ¤¤¤ë¡£
254 ¤¢¤ë¥¹¥ì¥Ã¥É¤¬¼è¤ê¾Ã¤·²Äǽ¤Ç¡¢¤½¤Î¼è¤ê¾Ã¤·¼ïÊÌ (cancelability type)
255 ¤¬±ä´ü (deferred) ¤Ç¡¢¤½¤Î¥¹¥ì¥Ã¥É¤ËÂФ¹¤ë¼è¤ê¾Ã¤·Í׵᤬½èÍýÂÔ¤Á¤Î¾ì¹ç¡¢
256 ¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È¤Ç¤¢¤ë´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿»þÅÀ¤Ç¡¢¤½¤Î¥¹¥ì¥Ã¥É¤Î¥¥ã¥ó¥»¥ë¤¬
259 POSIX.1-2001 ¤È POSIX.1-2008 ¤ÎξÊý¡¢¤â¤·¤¯¤Ï¤¤¤º¤ì¤«°ìÊý¤Ç¤Ï¡¢
260 °Ê²¼¤Î´Ø¿ô¤Ï¡¢¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È (cancellation points) ¤Ç
261 ¤¢¤ë¤³¤È¤¬É¬¿Ü¤È¤Ê¤Ã¤Æ¤¤¤ë¡£
264 .\" Document the list of all functions that are cancellation points in glibc
288 openat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
293 pthread_cond_timedwait()
311 sigpause() [POSIX.1-2001 only (moves to "may" list in POSIX.1-2008)]
319 usleep() [POSIX.1-2001 ¤Î¤ß (POSIX.1-2008 ¤Çºï½ü¤µ¤ì¤¿)]
328 POSIX.1-2001 ¤È POSIX.1-2008 ¤ÎξÊý¡¢¤â¤·¤¯¤Ï¤¤¤º¤ì¤«°ìÊý¤Ç¤Ï¡¢
329 °Ê²¼¤Î´Ø¿ô¤Ï¡¢¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È (cancellation points) ¤Ç
330 ¤¢¤Ã¤Æ¤â¤è¤¤¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
340 chmod() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
341 chown() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
355 dprintf() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
363 faccessat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
364 fchmod() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
365 fchmodat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
366 fchown() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
367 fchownat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
369 fcntl() (cmd °ú¤¿ô¤¬²¿¤Ç¤¢¤Ã¤Æ¤â)
391 fstatat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
395 futimens() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
406 getdelim() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
412 gethostbyaddr() [SUSv3 ¤Î¤ß (¤³¤Î´Ø¿ô¤Ï POSIX.1-2008 ¤Çºï½ü¤µ¤ì¤Æ¤¤¤ë)]
413 gethostbyname() [SUSv3 ¤Î¤ß (¤³¤Î´Ø¿ô¤Ï POSIX.1-2008 ¤Çºï½ü¤µ¤ì¤Æ¤¤¤ë)]
417 getline() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
424 getopt() (opterr ¤¬ 0 °Ê³°¤Î¾ì¹ç)
442 getwd() [SUSv3 ¤Î¤ß (¤³¤Î´Ø¿ô¤Ï POSIX.1-2008 ¤Çºï½ü¤µ¤ì¤Æ¤¤¤ë)]
448 linkat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
449 lio_listio() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
452 lockf() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
455 mkdir() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
456 mkdirat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
457 mkdtemp() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
458 mkfifo() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
459 mkfifoat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
460 mknod() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
461 mknodat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
480 posix_trace_create_withlog()
481 posix_trace_eventtypelist_getnext_id()
482 posix_trace_eventtypelist_rewind()
484 posix_trace_get_attr()
485 posix_trace_get_filter()
486 posix_trace_get_status()
487 posix_trace_getnext_event()
490 posix_trace_set_filter()
491 posix_trace_shutdown()
492 posix_trace_timedgetnext_event()
493 posix_typed_mem_open()
495 psiginfo() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
496 psignal() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
497 pthread_rwlock_rdlock()
498 pthread_rwlock_timedrdlock()
499 pthread_rwlock_timedwrlock()
500 pthread_rwlock_wrlock()
511 readlink() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
512 readlinkat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
515 renameat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
518 scandir() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
529 sigpause() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
535 symlinkat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
546 unlinkat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
547 utime() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
548 utimensat() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
549 utimes() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
550 vdprintf() [POSIX.1-2008 ¤ÇÄɲ䵤줿]
562 ¼ÂÁõ»þ¤Ë¡¢É¸½àµ¬³Ê¤Çµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¤½¤Î¾¤Î´Ø¿ô¤ò¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È
563 ¤È¤¹¤ë¤³¤È¤âǧ¤á¤é¤ì¤Æ¤¤¤ë¡£
564 Æäˡ¢Ää»ß (block) ¤¹¤ë²ÄǽÀ¤¬¤¢¤ëÈóɸ½à¤Î´Ø¿ô¤ò¼è¤ê¾Ã¤·¥Ý¥¤¥ó¥È¤È
565 ¤¹¤ë¼ÂÁõ¤Ï¤¢¤êÆÀ¤ë¤³¤È¤À¤í¤¦
566 (¥Õ¥¡¥¤¥ë¤ò°·¤¦²ÄǽÀ¤Î¤¢¤ë¤Û¤È¤ó¤É¤Î´Ø¿ô¤¬¤³¤ì¤Ë´Þ¤Þ¤ì¤ë)¡£
567 .\" So, scanning "cancellation point" comments in the glibc 2.8 header
568 .\" files, it looks as though at least the following nonstandard
569 .\" functions are cancellation points:
609 .\" getprotobynumber_r
624 .\" getwchar_unlocked
631 .\" pthread_timedjoin_np
637 .\" putwchar_unlocked
657 .SS "Linux ¤Ç¤Î¥³¥ó¥Ñ¥¤¥ë"
658 Linux ¤Ç¤Ï¡¢Pthreads API ¤òÍѤ¤¤¿¥×¥í¥°¥é¥à¤Ï
660 ¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤Ù¤¤Ç¤¢¤ë¡£
661 .SS "POSIX ¥¹¥ì¥Ã¥É¤Î Linux ¤Ç¤Î¼ÂÁõ"
662 ¤³¤ì¤Þ¤Ç¡¢2¤Ä¤Î¥¹¥ì¥Ã¥É¤Î¼ÂÁõ¤¬ Linux ¤Î GNU C ¥é¥¤¥Ö¥é¥ê¤Ë¤è¤ê
666 ºÇ½é¤Î Pthreads ¤Î¼ÂÁõ¡£
667 glibc 2.4 °Ê¹ß¤Ï¡¢¤³¤Î¼ÂÁõ¤Ï¤â¤Ï¤ä¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
669 .BR NPTL " (Native POSIX Threads Library)"
670 ¿·¤·¤¤ Pthreads ¤Î¼ÂÁõ¡£LinuxThreads ¤ÈÈæ¤Ù¤ë¤È¡¢
671 NPTL ¤Ï POSIX.1 ¤ÎÍ×µá»ÅÍͤؤνàµò¤ÎÅٹ礤¤¬¹â¤¯¡¢
672 ¿¿ô¤Î¥¹¥ì¥Ã¥É¤òºîÀ®¤·¤¿ºÝ¤ÎÀǽ¤â¹â¤¤¡£
673 NPTL ¤Ï glibc 2.3.2 °Ê¹ß¤ÇÍøÍѲÄǽ¤Ç¤¢¤ë¡£
674 NPTL ¤òÍøÍѤ¹¤ë¤Ë¤Ï Linux 2.6 ¥«¡¼¥Í¥ë¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤ëµ¡Ç½¤¬É¬ÍפǤ¢¤ë¡£
676 ¤É¤Á¤é¤Î¼ÂÁõ¤â¤¤¤ï¤æ¤ë 1:1 ¼ÂÁõ¡¢¤¹¤Ê¤ï¤Á¸Ä¡¹¤Î¥¹¥ì¥Ã¥É¤¬
677 ¥«¡¼¥Í¥ë¤Î¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¼ÂÂΤ˥ޥåԥ󥰤µ¤ì¤ë¡£
678 ¤É¤Á¤é¤Î¥¹¥ì¥Ã¥É¤Î¼ÂÁõ¤â Linux ¤Î
680 ¥·¥¹¥Æ¥à¥³¡¼¥ë¤òÍøÍѤ·¤Æ¤¤¤ë¡£
681 NPTL ¤Ç¤Ï¡¢¥¹¥ì¥Ã¥ÉƱ´ü¤Î´ðËܵ¡¹½ (mutex ¤ä ¥¹¥ì¥Ã¥É¤Î join Åù) ¤Ï
684 ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤Ã¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¡£
686 ¤³¤Î¼ÂÁõ¤ÎÂ礤ÊÆÃħ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë:
688 ¥á¥¤¥ó¥¹¥ì¥Ã¥É (ºÇ½é¤Î¥¹¥ì¥Ã¥É) ¤È¥×¥í¥°¥é¥à¤¬
689 .BR pthread_create (3)
690 ¤ò»È¤Ã¤ÆºîÀ®¤·¤¿¥¹¥ì¥Ã¥É¤Ë²Ã¤¨¡¢
691 ¤³¤Î¼ÂÁõ¤Ç¤Ï¡Ö´ÉÍý (manager)¡×¥¹¥ì¥Ã¥É¤¬ºîÀ®¤µ¤ì¤ë¡£
692 ´ÉÍý¥¹¥ì¥Ã¥É¤Ï¥¹¥ì¥Ã¥É¤ÎºîÀ®¤È½ªÎ»¤ò¼è¤ê°·¤¦
693 (¤³¤Î¥¹¥ì¥Ã¥É¤¬¤¦¤Ã¤«¤ê kill ¤µ¤ì¤ë¤È¡¢ÌäÂ꤬µ¯¤³¤ë¤³¤È¤¬¤¢¤ë)¡£
695 ¤³¤Î¼ÂÁõ¤Ç¤ÏÆâÉô¤Ç¥·¥°¥Ê¥ë¤ò»ÈÍѤ·¤Æ¤¤¤ë¡£
696 Linux 2.2 °Ê¹ß¤Ç¤Ï¡¢¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë¤Î¤¦¤ÁºÇ½é¤Î 3¤Ä¤¬»È¤ï¤ì¤ë
699 ¤½¤ì°ÊÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï
704 ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢¥¹¥ì¥Ã¥É¼ÂÁõ¤ÇÍøÍѤµ¤ì¤Æ¤¤¤ë¥·¥°¥Ê¥ë¤ò
705 ¤É¤ì¤â»È¤ï¤Ê¤¤¤è¤¦¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
707 ¥¹¥ì¥Ã¥É´Ö¤Ç¥×¥í¥»¥¹ ID ¤ò¶¦Í¤·¤Ê¤¤
708 (¼ÂºÝ¤Ë¤Ï LinuxThreads ¤Î¥¹¥ì¥Ã¥É¤ÏÄ̾ï¤è¤ê¤Ï¾ðÊó¤ò¶¦Í¤¹¤ë¥×¥í¥»¥¹¤È¤·¤Æ
709 ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤¬¡¢°ì¤Ä¤Î¶¦ÄÌ¤Î¥×¥í¥»¥¹ ID ¤ò¶¦Í¤·¤Æ¤Ï¤¤¤Ê¤¤)¡£
710 (´ÉÍý¥¹¥ì¥Ã¥É¤ò´Þ¤à) LinuxThreads ¥¹¥ì¥Ã¥É¤Ï
712 ¤ò»È¤¦¤ÈÊÌ¤Î¥×¥í¥»¥¹¤Î¤è¤¦¤Ë¸«¤¨¤ë¡£
714 LinuxThreads ¤Î¼ÂÁõ¤Ç¤Ï POSIX.1 »ÅÍͤ«¤é°ï椷¤Æ¤¤¤ëÅÀ¤¬
715 ¤¤¤¯¤Ä¤«¤¢¤ë¡£°Ê²¼¤Ë¼¨¤¹¤è¤¦¤ÊÅÀ¤¬¤¢¤ë:
718 ¤ò¸Æ¤Ó½Ð¤·¤¿¤È¤¤Ë¡¢¥¹¥ì¥Ã¥ÉËè¤Ë°Û¤Ê¤ëÃͤ¬ÊÖ¤µ¤ì¤ë¡£
720 ¥á¥¤¥ó¥¹¥ì¥Ã¥É°Ê³°¤Î¥¹¥ì¥Ã¥É¤Ç
722 ¤ò¸Æ¤Ó½Ð¤¹¤È¡¢´ÉÍý¥¹¥ì¥Ã¥É¤Î¥×¥í¥»¥¹ ID ¤¬ÊÖ¤µ¤ì¤ë¡£
723 ËÜÅö¤Ï¡¢¤³¤ì¤é¤Î¥¹¥ì¥Ã¥É¤Ç
725 ¤ò¸Æ¤ó¤À¾ì¹ç¤Ë¤Ï¥á¥¤¥ó¥¹¥ì¥Ã¥É¤Ç¤Î
727 ¤ÈƱ¤¸Ãͤ¬ÊÖ¤ë¤Ù¤¤Ç¤¢¤ë¡£
731 ¤ò»È¤Ã¤Æ¿·¤·¤¤»Ò¥×¥í¥»¥¹¤òºîÀ®¤·¤¿¾ì¹ç¡¢
732 ¤É¤Î¥¹¥ì¥Ã¥É¤Ç¤â¤³¤Î»Ò¥×¥í¥»¥¹¤ò
734 ¤Ç¤¤ë¤Ù¤¤Ç¤¢¤ë¡£¤·¤«¤·¤Ê¤¬¤é¡¢¤³¤Î¼ÂÁõ¤Ç¤Ï»Ò¥×¥í¥»¥¹¤òºîÀ®¤·¤¿
735 ¥¹¥ì¥Ã¥É¤À¤±¤¬¤³¤Î»Ò¥×¥í¥»¥¹¤ò
741 ¤ò¸Æ¤Ó½Ð¤·¤¿¾ì¹ç¡¢Â¾¤Î¥¹¥ì¥Ã¥É¤ÏÁ´¤Æ½ªÎ»¤µ¤ì¤ë (POSIX.1 ¤Î»ÅÍÍÄ̤ê)¡£
742 ¤·¤«¤·¤Ê¤¬¤é¡¢¿·¤·¤¤¥×¥í¥»¥¹¤Ï
744 ¤ò¸Æ¤ó¤À¥¹¥ì¥Ã¥É¤ÈƱ¤¸ PID ¤ò»ý¤Ä¡£Àµ¤·¤¯¤Ï
745 ¥á¥¤¥ó¥¹¥ì¥Ã¥É¤ÈƱ¤¸ PID ¤ò»ý¤Ä¤Ù¤¤Ç¤¢¤ë¡£
747 ¥¹¥ì¥Ã¥É´Ö¤Ç¥æ¡¼¥¶ ID ¤È¥°¥ë¡¼¥× ID ¤¬¶¦Í¤µ¤ì¤Ê¤¤
748 ¤³¤Î¤³¤È¤Ï¡¢set-user-ID ¥×¥í¥°¥é¥à¤ÇÌÌÅݤʻöÂÖ¤ò¾·¤¤¤¿¤ê¡¢
751 ¤Ê¤É¤ò»È¤Ã¤Æ¿®ÍѾðÊó (credentials) ¤òÊѹ¹¤·¤¿¾ì¹ç¤Ë
752 Pthreads ´Ø¿ô¤¬¼ºÇÔ¤¹¤ë¸¶°ø¤È¤Ê¤ë¡£
754 ¥¹¥ì¥Ã¥É´Ö¤Ç¶¦Ä̤Υ»¥Ã¥·¥ç¥ó ID ¤ä¥×¥í¥»¥¹¥°¥ë¡¼¥× ID ¤ò¶¦Í¤·¤Ê¤¤¡£
758 ¤ò»È¤Ã¤ÆºîÀ®¤µ¤ì¤ë¥ì¥³¡¼¥É¡¦¥í¥Ã¥¯¤ò¶¦Í¤·¤Ê¤¤¡£
763 ¤¬ÊÖ¤¹¾ðÊó¤¬¥×¥í¥»¥¹Á´ÂΤξðÊó¤Ç¤Ê¤¯¥¹¥ì¥Ã¥Éñ°Ì¤Î¾ðÊó¤Ç¤¢¤ë¡£
765 ¥¹¥ì¥Ã¥É´Ö¤Ç¥»¥Þ¥Õ¥©¤Î¥¢¥ó¥É¥¥ÃÍ
769 ¥¹¥ì¥Ã¥É´Ö¤Ç¥¤¥ó¥¿¡¼¥Ð¥ë¡¦¥¿¥¤¥Þ¤ò¶¦Í¤·¤Ê¤¤¡£
771 ¥¹¥ì¥Ã¥É¤Ï¶¦Ä̤Πnice Ãͤò¶¦Í¤·¤Ê¤¤¡£
773 POSXI.1 ¤Ç¤Ï¡¢Á´ÂΤȤ·¤Æ¤Î¥×¥í¥»¥¹¤ËÁ÷¤é¤ì¤ë¥·¥°¥Ê¥ë¤È¡¢
774 ¸ÄÊ̤Υ¹¥ì¥Ã¥É¤ËÁ÷¤é¤ì¤ë¥·¥°¥Ê¥ë¤ò¶èÊ̤·¤Æ¹Í¤¨¤Æ¤¤¤ë¡£
775 POSIX.1 ¤Ë¤è¤ë¤È¡¢¥×¥í¥»¥¹¤ËÁ÷¤é¤ì¤¿¥·¥°¥Ê¥ë (Î㤨¤Ð
777 ¤ò»È¤Ã¤ÆÁ÷¤ë) ¤Ï¡¢¤½¤Î¥×¥í¥»¥¹¤Ë°¤¹¥¹¥ì¥Ã¥É¤Î¤¦¤Á
778 ¾¡¼ê¤Ë (arbitrarily) ¤ËÁªÂò¤µ¤ì¤¿°ì¤Ä¤Î¥¹¥ì¥Ã¥É¤Ë¤è¤ê½èÍý¤µ¤ì¤ë
779 ¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£LinuxThreads ¤Ï¥×¥í¥»¥¹¤ËÁ÷¤é¤ì¤ë¥·¥°¥Ê¥ë¤Î
780 ³µÇ°¤ËÂбþ¤·¤Æ¤ª¤é¤º¡¢¥·¥°¥Ê¥ë¤ÏÆÃÄê¤Î¥¹¥ì¥Ã¥É¤Ë¤À¤±Á÷¤ë¤³¤È¤¬¤Ç¤¤ë¡£
782 ¥¹¥ì¥Ã¥É¤Ï¤½¤ì¤¾¤ì¤ÎÆȼ«¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ÎÀßÄê¤ò»ý¤Ä¡£
783 ¤·¤«¤·¡¢¿·¤·¤¤¥¹¥ì¥Ã¥É¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ÎÀßÄê¤Ï
784 ¤½¤Î¥¹¥ì¥Ã¥É¤òºîÀ®¤·¤¿¥¹¥ì¥Ã¥É¤«¤é¥³¥Ô¡¼¤µ¤ì¡¢¤½¤Î¤¿¤á
785 ¥¹¥ì¥Ã¥É¤ÏºÇ½é¤Ï°ì¤Ä¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ò¶¦Í¤¹¤ë¡£
786 (»ÅÍͤǤϡ¢¿·¤·¤¤¥¹¥ì¥Ã¥É¤ÏÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¾õÂÖ
787 ¤Ç³«»Ï¤µ¤ì¤ë¤Ù¤¤È¤µ¤ì¤Æ¤¤¤ë¡£
788 2¤Ä¤Î¥¹¥ì¥Ã¥É¤¬¶¦Í¤µ¤ì¤Æ¤¤¤ëÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¾å¤ÇƱ»þ¤Ë
789 ¥·¥°¥Ê¥ë¤Î½èÍý¤ò¹Ô¤Ã¤¿¾ì¹ç¡¢Í½Â¬ÉÔ²Äǽ¤Ê¥×¥í¥°¥é¥à¤Î¥¨¥é¡¼¤¬
792 NPTL ¤Ç¤Ï¡¢°ì¤Ä¤Î¥×¥í¥»¥¹¤ÎÁ´¤Æ¤Î¥¹¥ì¥Ã¥É¤ÏƱ¤¸¥¹¥ì¥Ã¥É¡¦¥°¥ë¡¼¥×
793 ¤Ë°¤¹¤ë; ¥¹¥ì¥Ã¥É¡¦¥°¥ë¡¼¥×¤ÎÁ´¥á¥ó¥Ð¡¼¤ÏƱ¤¸ PID ¤ò¶¦Í¤¹¤ë¡£
794 NPTL ¤Ï´ÉÍý¥¹¥ì¥Ã¥É (manager thread) ¤òÍøÍѤ·¤Ê¤¤¡£
795 NPTL ¤ÏÆâÉô¤Ç¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë¤Î¤¦¤ÁºÇ½é¤Î 2¤Ä¤ÎÈÖ¹æ¤ò»ÈÍѤ·¤Æ¤ª¤ê
797 »²¾È)¡¢¤³¤ì¤é¤Î¥·¥°¥Ê¥ë¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï»ÈÍѤǤ¤Ê¤¤¡£
799 NPTL ¤Ë¤â POSIX.1 ¤Ë½àµò¤·¤Æ¤¤¤Ê¤¤ÅÀ¤¬¾¯¤Ê¤¯¤È¤â°ì¤Ä¤¢¤ë:
801 ¥¹¥ì¥Ã¥É¤Ï¶¦Ä̤Πnice Ãͤò¶¦Í¤·¤Ê¤¤¡£
802 .\" FIXME . bug report filed for NPTL nice nonconformance
803 .\" http://bugzilla.kernel.org/show_bug.cgi?id=6258
804 .\" Sep 08: there is a patch by Denys Vlasenko to address this
805 .\" "make setpriority POSIX compliant; introduce PRIO_THREAD extension"
806 .\" Monitor this to see if it makes it into mainline.
808 NPTL ¤Îɸ½àÈó½àµò¤ÊÅÀ¤Î¤¦¤Á¤¤¤¯¤Ä¤«¤Ï°ÊÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Î¤ßȯÀ¸¤¹¤ë:
813 ¤¬ÊÖ¤¹¾ðÊó¤¬¥×¥í¥»¥¹Á´ÂΤξðÊó¤Ç¤Ê¤¯¥¹¥ì¥Ã¥Éñ°Ì¤Î¾ðÊó¤Ç¤¢¤ë
814 (¥«¡¼¥Í¥ë 2.6.9 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
816 ¥¹¥ì¥Ã¥É´Ö¤Ç¥ê¥½¡¼¥¹À©¸Â¤ò¶¦Í¤·¤Ê¤¤ (¥«¡¼¥Í¥ë 2.6.10 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
818 ¥¹¥ì¥Ã¥É´Ö¤Ç¥¤¥ó¥¿¡¼¥Ð¥ë¡¦¥¿¥¤¥Þ¤ò¶¦Í¤·¤Ê¤¤
819 (¥«¡¼¥Í¥ë 2.6.12 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
823 ¤ò»È¤Ã¤Æ¿·¤·¤¤¥»¥Ã¥·¥ç¥ó¤ò³«»Ï¤¹¤ë¤³¤È¤¬¤Ç¤¤ë
824 (¥«¡¼¥Í¥ë 2.6.16 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
828 ¤ò»È¤Ã¤Æ¤½¤Î¥×¥í¥»¥¹¤ò¥×¥í¥»¥¹¡¦¥°¥ë¡¼¥×¡¦¥ê¡¼¥À¡¼¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤ë
829 (¥«¡¼¥Í¥ë 2.6.16 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
831 ¥¹¥ì¥Ã¥É¤Ï¤½¤ì¤¾¤ì¤ÎÆȼ«¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ÎÀßÄê¤ò»ý¤Ä¡£
832 ¤·¤«¤·¡¢¿·¤·¤¤¥¹¥ì¥Ã¥É¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ÎÀßÄê¤Ï
833 ¤½¤Î¥¹¥ì¥Ã¥É¤òºîÀ®¤·¤¿¥¹¥ì¥Ã¥É¤«¤é¥³¥Ô¡¼¤µ¤ì¡¢¤½¤Î¤¿¤á
834 ¥¹¥ì¥Ã¥É¤ÏºÇ½é¤Ï°ì¤Ä¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ò¶¦Í¤¹¤ë
835 (¥«¡¼¥Í¥ë 2.6.16 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
837 NPTL ¤Î¼ÂÁõ¤Ç¤Ï°Ê²¼¤ÎÅÀ¤Ë¤Ä¤¤¤Æ¤âÃí°Õ¤¹¤ë¤³¤È:
839 ¥¹¥¿¥Ã¥¯¥µ¥¤¥º¤Î¥ê¥½¡¼¥¹¤Î¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È
845 °Ê³°¤ÎÃͤËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤ÎÃͤ¬
846 ¿·¤·¤¤¥¹¥ì¥Ã¥É¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥¹¥¿¥Ã¥¯¥µ¥¤¥º¤È¤Ê¤ë¡£
847 ÀßÄê¤ò͸ú¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¥ê¥ß¥Ã¥ÈÃͤò
848 ÀßÄꤷ¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤¿¤¤¤Æ¤¤¤Ï¡¢¥·¥§¥ë¤ÎÁȤ߹þ¤ß¥³¥Þ¥ó¥É¤Î
851 .IR "limit stacksize" )
853 .SS "¥¹¥ì¥Ã¥É¼ÂÁõ¤ÎȽÄê"
854 glibc 2.3.2 °Ê¹ß¤Ç¤Ï¡¢
857 ¥·¥¹¥Æ¥à¤Î¥¹¥ì¥Ã¥É¼ÂÁõ¤òȽÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
862 bash$ getconf GNU_LIBPTHREAD_VERSION
867 ¤¾¤ì°ÊÁ°¤Î glibc ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤Ç
868 ¥Ç¥Õ¥©¥ë¥È¤Î¥¹¥ì¥Ã¥É¼ÂÁõ¤òȽÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
872 bash$ $( ldd /bin/ls | grep libc.so | awk \(aq{print $3}\(aq ) | \\
873 egrep \-i \(aqthreads|ntpl\(aq
874 Native POSIX Threads Library by Ulrich Drepper et al
877 .SS "¥¹¥ì¥Ã¥É¤Î¼ÂÁõ¤ÎÁªÂò: LD_ASSUME_KERNEL"
878 LinuxThreads ¤È NPTL ¤ÎξÊý¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë glibc
879 (glibc 2.3.\fIx\fP) ¤¬¤¢¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢
881 ´Ä¶ÊÑ¿ô¤ò»È¤¦¤³¤È¤Ç¡¢Æ°Åª¥ê¥ó¥«¤¬¥Ç¥Õ¥©¥ë¥È¤Ç
882 ÁªÂò¤¹¤ë¥¹¥ì¥Ã¥É¼ÂÁõ¤ò¾å½ñ¤¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
883 ¤³¤ÎÊÑ¿ô¤Ë¤è¤ê¡¢Æ°Åª¥ê¥ó¥«¤¬ÆÃÄê¤Î¥Ð¡¼¥¸¥ç¥ó¤Î¥«¡¼¥Í¥ë¾å¤Ç
884 Æ°ºî¤·¤Æ¤¤¤ë¤È²¾Äꤹ¤ë¤è¤¦¤Ë»ØÄꤹ¤ë¡£
885 NPTL ¤¬É¬ÍפȤ¹¤ë¥µ¥Ý¡¼¥Èµ¡Ç½¤òÄ󶡤·¤Æ¤¤¤Ê¤¤¥«¡¼¥Í¥ë¥Ð¡¼¥¸¥ç¥ó¤ò
886 »ØÄꤹ¤ë¤³¤È¤Ç¡¢¶¯À©Åª¤Ë LinuxThreads ¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë
887 (¤³¤Î¤è¤¦¤Ê¤³¤È¤ò¤¹¤ëºÇ¤â¤¢¤ê¤½¤¦¤Ê¾ìÌ̤ϡ¢
888 LinuxThreads ¤Îɸ½àÈó½àµò¤Ê¿¶Éñ¤¤¤Ë°Í¸¤¹¤ë (²õ¤ì¤¿) ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó
889 ¤òÆ°ºî¤µ¤»¤ë¾ì¹ç¤À¤í¤¦)¡£
894 bash$ $( LD_ASSUME_KERNEL=2.2.5 ldd /bin/ls | grep libc.so | \\
895 awk \(aq{print $3}\(aq ) | egrep \-i \(aqthreads|ntpl\(aq
896 linuxthreads-0.10 by Xavier Leroy
906 ¤ª¤è¤Ó Pthreads ¤Î³Æ¼ï¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¡¢Î㤨¤Ð:
907 .BR pthread_attr_init (3),
908 .BR pthread_atfork (3),
909 .BR pthread_cancel (3),
910 .BR pthread_cleanup_push (3),
911 .BR pthread_cond_signal (3),
912 .BR pthread_cond_wait (3),
913 .BR pthread_create (3),
914 .BR pthread_detach (3),
915 .BR pthread_equal (3),
916 .BR pthread_exit (3),
917 .BR pthread_key_create (3),
918 .BR pthread_kill (3),
919 .BR pthread_mutex_lock (3),
920 .BR pthread_mutex_unlock (3),
921 .BR pthread_once (3),
922 .BR pthread_setcancelstate (3),
923 .BR pthread_setcanceltype (3),
924 .BR pthread_setspecific (3),
925 .BR pthread_sigmask (3),
926 .BR pthread_testcancel (3)