Rechercher une page de manuel
pthreads
Langue: ja
Version: 2005-06-07 (openSuse - 09/10/07)
Section: 7 (Divers)
Sommaire
̾Á°
pthreads - POSIX ¥¹¥ì¥Ã¥ÉÀâÌÀ
POSIX.1 ¤Ï¡¢°ìÈÌ¤Ë POSIX ¥¹¥ì¥Ã¥É¤ä Pthreads ¤È¤·¤ÆÃΤé¤ì¤ë ¥¹¥ì¥Ã¥É¡¦¥×¥í¥°¥é¥ß¥ó¥°¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹·² (´Ø¿ô¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë) ¤òµ¬Äꤷ¤Æ¤¤¤ë¡£°ì¤Ä¤Î¥×¥í¥»¥¹¤ÏÊ£¿ô¤Î¥¹¥ì¥Ã¥É¤ò»ý¤Ä¤³¤È¤¬¤Ç¤¡¢ Á´¤Æ¤Î¥¹¥ì¥Ã¥É¤ÏƱ¤¸¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¡£ ¤³¤ì¤é¤Î¥¹¥ì¥Ã¥É¤ÏƱ¤¸Âç°è¥á¥â¥ê (¥Ç¡¼¥¿¤È¥Ò¡¼¥×Îΰè) ¤ò¶¦Í¤¹¤ë¤¬¡¢ ³Æ¥¹¥ì¥Ã¥É¤Ï¼«Ê¬ÀìÍѤΥ¹¥¿¥Ã¥¯ (¼«Æ°ÊÑ¿ô) ¤ò»ý¤Ä¡£POSIX.1 ¤Ï¥¹¥ì¥Ã¥É´Ö¤Ç¤É¤Î¤è¤¦¤Ê°À¤ò¶¦Í¤¹¤ë¤«¤Ë¤Ä¤¤¤Æ¤âÄê¤á¤Æ¤¤¤ë (¤Ä¤Þ¤ê¡¢¤³¤ì¤é¤Î°À¤Ï¥¹¥ì¥Ã¥Éñ°Ì¤Ç¤Ï¤Ê¤¯¥×¥í¥»¥¹Á´ÂΤǶ¦Ä̤Ǥ¢¤ë):
- -
- ¥×¥í¥»¥¹ ID
- -
- ¿Æ¥×¥í¥»¥¹ ID
- -
- ¥×¥í¥»¥¹¥°¥ë¡¼¥× ID ¤È¥»¥Ã¥·¥ç¥ó ID
- -
- À©¸æüËö
- -
- ¥æ¡¼¥¶ ID ¤È¥°¥ë¡¼¥× ID
- -
- ¥ª¡¼¥×¥ó¤¹¤ë¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿
- -
- ¥ì¥³¡¼¥É¤Î¥í¥Ã¥¯ (fcntl(3) »²¾È)
- -
- ¥·¥°¥Ê¥ë¤ÎÇÛÃÖ
- -
- ¥Õ¥¡¥¤¥ë¥â¡¼¥ÉºîÀ®¥Þ¥¹¥¯ (umask(2))
- -
- ¥«¥ì¥ó¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê (chdir(2)) ¤È¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê (chroot(2))
- -
- ¥¤¥ó¥¿¡¼¥Ð¥ë¡¦¥¿¥¤¥Þ (setitimer(2)) ¤È POSIX ¥¿¥¤¥Þ (timer_create(3))
- -
- nice ÃÍ (setpriority(2))
- -
- ¥ê¥½¡¼¥¹À©¸Â (setrlimit(2))
- -
- CPU »þ´Ö (times(2)) ¤È¥ê¥½¡¼¥¹ (getrusage(2)) ¤Î¾ÃÈñ¾õ¶·¤Î·×¬
¥¹¥¿¥Ã¥¯¤Ë¤Ä¤¤¤Æ¤â¡¢POSIX.1 ¤Ï¤É¤Î¤è¤¦¤Ê°À¤¬ ¸Ä¡¹¤Î¥¹¥ì¥Ã¥É¤ÇÆÈΩ¤Ë´ÉÍý¤µ¤ì¤ë¤«¤òµ¬Äꤷ¤Æ¤¤¤ë:
- -
- ¥¹¥ì¥Ã¥É ID pthread_t ¥Ç¡¼¥¿·¿)
- -
- ¥·¥°¥Ê¥ë¥Þ¥¹¥¯ (pthread_sigmask(3))
- -
- errno ÊÑ¿ô
- -
- ÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯ (sigaltstack(2))
- -
- ¥ê¥¢¥ë¥¿¥¤¥à¡¦¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤Î¥Ý¥ê¥·¡¼¤ÈÍ¥ÀèÅÙ (sched_setscheduler(2) ¤È sched_setparam(2))
°Ê²¼¤Î Linux ÆÃͤε¡Ç½¤â¥¹¥ì¥Ã¥Éñ°Ì¤Ç¤¢¤ë:
- -
- ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£ (capabilities(7) »²¾È)
- -
- CPU affinity (¿ÆÏÂÅÙ) (sched_setaffinity(2))
Linux ¤Ç¤Î¥³¥ó¥Ñ¥¤¥ë
Linux ¤Ç¤Ï¡¢Pthreads API ¤òÍѤ¤¤¿¥×¥í¥°¥é¥à¤Ï cc -pthread ¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤Ù¤¤Ç¤¢¤ë¡£POSIX ¥¹¥ì¥Ã¥É¤Î Linux ¤Ç¤Î¼ÂÁõ
¤³¤ì¤Þ¤Ç¡¢2¤Ä¤Î¥¹¥ì¥Ã¥É¤Î¼ÂÁõ¤¬ Linux ¤Î GNU C ¥é¥¤¥Ö¥é¥ê¤Ë¤è¤ê Ä󶡤µ¤ì¤Æ¤¤¿¡£- -
- LinuxThreads ºÇ½é¤Î (º£¤Ï»þÂåÃÙ¤ì¤Ë¤Ê¤Ã¤¿) Pthreads ¤Î¼ÂÁõ¡£
- -
- NPTL (Native POSIX Threads Library) ¿·¤·¤¤ Pthreads ¤Î¼ÂÁõ¡£LinuxThreads ¤ÈÈæ¤Ù¤ë¤È¡¢ NPTL ¤Ï POSIX.1 ¤ÎÍ×µá»ÅÍͤؤνàµò¤ÎÅٹ礤¤¬¹â¤¯¡¢ ¿¿ô¤Î¥¹¥ì¥Ã¥É¤òºîÀ®¤·¤¿ºÝ¤ÎÀǽ¤â¹â¤¤¡£ NPTL ¤Ï Linux 2.6 ¥«¡¼¥Í¥ë¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤ëµ¡Ç½¤òɬÍפȤ¹¤ë¡£
¤É¤Á¤é¤Î¼ÂÁõ¤â¤¤¤ï¤æ¤ë 1:1 ¼ÂÁõ¡¢¤¹¤Ê¤ï¤Á¸Ä¡¹¤Î¥¹¥ì¥Ã¥É¤¬ ¥«¡¼¥Í¥ë¤Î¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¼ÂÂΤ˥ޥåԥ󥰤µ¤ì¤ë¡£
¤É¤Á¤é¤Î¥¹¥ì¥Ã¥É¤Î¼ÂÁõ¤â Linux ¤Î clone(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤òÍøÍѤ·¤Æ¤¤¤ë¡£ NPTL ¤Ç¤Ï¡¢¥¹¥ì¥Ã¥ÉƱ´ü¤Î´ðËܵ¡¹½ (mutex ¤ä ¥¹¥ì¥Ã¥É¤Î join Åù) ¤Ï Linux ¤Î futex(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤Ã¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¡£
¿·¤·¤¤ GNU C ¥é¥¤¥Ö¥é¥ê¤Ï LinuxThreads ¤È NPTL ¤ÎξÊý¤òÄ󶡤·¤Æ¤ª¤ê¡¢ (¥«¡¼¥Í¥ë¤¬¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ì¤Ð) NPTL ¤¬¥Ç¥Õ¥©¥ë¥È¤È¤Ê¤ë¡£
LinuxThreads
¤³¤Î¼ÂÁõ¤ÎÂ礤ÊÆÃħ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë:- -
- ¥á¥¤¥ó¥¹¥ì¥Ã¥É (ºÇ½é¤Î¥¹¥ì¥Ã¥É) ¤È¥×¥í¥°¥é¥à¤¬ pthread_create(3) ¤ò»È¤Ã¤ÆºîÀ®¤·¤¿¥¹¥ì¥Ã¥É¤Ë²Ã¤¨¡¢ ¤³¤Î¼ÂÁõ¤Ç¤Ï¡Ö´ÉÍý (manager)¡×¥¹¥ì¥Ã¥É¤¬ºîÀ®¤µ¤ì¤ë¡£ ´ÉÍý¥¹¥ì¥Ã¥É¤Ï¥¹¥ì¥Ã¥É¤ÎºîÀ®¤È½ªÎ»¤ò¼è¤ê°·¤¦ (¤³¤Î¥¹¥ì¥Ã¥É¤¬¤¦¤Ã¤«¤ê kill ¤µ¤ì¤ë¤È¡¢ÌäÂ꤬µ¯¤³¤ë¤³¤È¤¬¤¢¤ë)¡£
- -
- ¤³¤Î¼ÂÁõ¤Ç¤ÏÆâÉô¤Ç¥·¥°¥Ê¥ë¤ò»ÈÍѤ·¤Æ¤¤¤ë¡£ Linux 2.2 °Ê¹ß¤Ç¤Ï¡¢¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë¤Î¤¦¤ÁºÇ½é¤Î 3¤Ä¤¬»È¤ï¤ì¤ë¡£ ¤½¤ì°ÊÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï SIGUSR1 ¤È SIGUSR2 ¤¬»È¤ï¤ì¤ë¡£ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢¥¹¥ì¥Ã¥É¼ÂÁõ¤ÇÍøÍѤµ¤ì¤Æ¤¤¤ë¥·¥°¥Ê¥ë¤ò ¤É¤ì¤â»È¤ï¤Ê¤¤¤è¤¦¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- -
- ¥¹¥ì¥Ã¥É´Ö¤Ç¥×¥í¥»¥¹ ID ¤ò¶¦Í¤·¤Ê¤¤ (¼ÂºÝ¤Ë¤Ï LinuxThreads ¤Î¥¹¥ì¥Ã¥É¤ÏÄ̾ï¤è¤ê¤Ï¾ðÊó¤ò¶¦Í¤¹¤ë¥×¥í¥»¥¹¤È¤·¤Æ ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤¬¡¢°ì¤Ä¤Î¶¦ÄÌ¤Î¥×¥í¥»¥¹ ID ¤ò¶¦Í¤·¤Æ¤Ï¤¤¤Ê¤¤)¡£ (´ÉÍý¥¹¥ì¥Ã¥É¤ò´Þ¤à) LinuxThreads ¥¹¥ì¥Ã¥É¤Ï ps(1) ¤ò»È¤¦¤ÈÊÌ¤Î¥×¥í¥»¥¹¤Î¤è¤¦¤Ë¸«¤¨¤ë¡£
LinuxThreads ¤Î¼ÂÁõ¤Ç¤Ï POSIX.1 »ÅÍͤ«¤é°ï椷¤Æ¤¤¤ëÅÀ¤¬ ¤¤¤¯¤Ä¤«¤¢¤ë¡£°Ê²¼¤Ë¼¨¤¹¤è¤¦¤ÊÅÀ¤¬¤¢¤ë:
- -
- getpid(2) ¤ò¸Æ¤Ó½Ð¤·¤¿¤È¤¤Ë¡¢¥¹¥ì¥Ã¥ÉËè¤Ë°Û¤Ê¤ëÃͤ¬ÊÖ¤µ¤ì¤ë¡£
- -
- ¥á¥¤¥ó¥¹¥ì¥Ã¥É°Ê³°¤Î¥¹¥ì¥Ã¥É¤Ç getppid(2) ¤ò¸Æ¤Ó½Ð¤¹¤È¡¢´ÉÍý¥¹¥ì¥Ã¥É¤Î¥×¥í¥»¥¹ ID ¤¬ÊÖ¤µ¤ì¤ë¡£ ËÜÅö¤Ï¡¢¤³¤ì¤é¤Î¥¹¥ì¥Ã¥É¤Ç getppid(2) ¤ò¸Æ¤ó¤À¾ì¹ç¤Ë¤Ï¥á¥¤¥ó¥¹¥ì¥Ã¥É¤Ç¤Î getppid(2) ¤ÈƱ¤¸Ãͤ¬ÊÖ¤ë¤Ù¤¤Ç¤¢¤ë¡£
- -
- ¤¢¤ë¥¹¥ì¥Ã¥É¤¬ fork(2) ¤ò»È¤Ã¤Æ¿·¤·¤¤»Ò¥×¥í¥»¥¹¤òºîÀ®¤·¤¿¾ì¹ç¡¢ ¤É¤Î¥¹¥ì¥Ã¥É¤Ç¤â¤³¤Î»Ò¥×¥í¥»¥¹¤ò wait(2) ¤Ç¤¤ë¤Ù¤¤Ç¤¢¤ë¡£¤·¤«¤·¤Ê¤¬¤é¡¢¤³¤Î¼ÂÁõ¤Ç¤Ï»Ò¥×¥í¥»¥¹¤òºîÀ®¤·¤¿ ¥¹¥ì¥Ã¥É¤À¤±¤¬¤³¤Î»Ò¥×¥í¥»¥¹¤ò wait(2) ¤Ç¤¤ë¡£
- -
- ¤¢¤ë¥¹¥ì¥Ã¥É¤¬ execve(2) ¤ò¸Æ¤Ó½Ð¤·¤¿¾ì¹ç¡¢Â¾¤Î¥¹¥ì¥Ã¥É¤ÏÁ´¤Æ½ªÎ»¤µ¤ì¤ë (POSIX.1 ¤Î»ÅÍÍÄ̤ê)¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢¿·¤·¤¤¥×¥í¥»¥¹¤Ï execve(2) ¤ò¸Æ¤ó¤À¥¹¥ì¥Ã¥É¤ÈƱ¤¸ PID ¤ò»ý¤Ä¡£Àµ¤·¤¯¤Ï ¥á¥¤¥ó¥¹¥ì¥Ã¥É¤ÈƱ¤¸ PID ¤ò»ý¤Ä¤Ù¤¤Ç¤¢¤ë¡£
- -
- ¥¹¥ì¥Ã¥É´Ö¤Ç¥æ¡¼¥¶ ID ¤È¥°¥ë¡¼¥× ID ¤¬¶¦Í¤µ¤ì¤Ê¤¤ ¤³¤Î¤³¤È¤Ï¡¢set-user-ID ¥×¥í¥°¥é¥à¤ÇÌÌÅݤʻöÂÖ¤ò¾·¤¤¤¿¤ê¡¢ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬ seteuid(2) ¤Ê¤É¤ò»È¤Ã¤Æ¿®ÍѾðÊó (credentials) ¤òÊѹ¹¤·¤¿¾ì¹ç¤Ë Pthreads ´Ø¿ô¤¬¼ºÇÔ¤¹¤ë¸¶°ø¤È¤Ê¤ë¡£
- -
- ¥¹¥ì¥Ã¥É´Ö¤Ç¶¦Ä̤Υ»¥Ã¥·¥ç¥ó ID ¤ä¥×¥í¥»¥¹¥°¥ë¡¼¥× ID ¤ò¶¦Í¤·¤Ê¤¤¡£
- -
- ¥¹¥ì¥Ã¥É´Ö¤Ç fcntl(2) ¤ò»È¤Ã¤ÆºîÀ®¤µ¤ì¤ë¥ì¥³¡¼¥É¡¦¥í¥Ã¥¯¤ò¶¦Í¤·¤Ê¤¤¡£
- -
- times(2) ¤È getrusage(2) ¤¬ÊÖ¤¹¾ðÊó¤¬¥×¥í¥»¥¹Á´ÂΤξðÊó¤Ç¤Ê¤¯¥¹¥ì¥Ã¥Éñ°Ì¤Î¾ðÊó¤Ç¤¢¤ë¡£
- -
- ¥¹¥ì¥Ã¥É´Ö¤Ç¥»¥Þ¥Õ¥©¤Î¥¢¥ó¥É¥¥ÃÍ (semop(2) »²¾È) ¤ò¶¦Í¤·¤Ê¤¤¡£
- -
- ¥¹¥ì¥Ã¥É´Ö¤Ç¥¤¥ó¥¿¡¼¥Ð¥ë¡¦¥¿¥¤¥Þ¤ò¶¦Í¤·¤Ê¤¤¡£
- -
- ¥¹¥ì¥Ã¥É¤Ï¶¦Ä̤Πnice Ãͤò¶¦Í¤·¤Ê¤¤¡£
- -
- POSXI.1 ¤Ç¤Ï¡¢Á´ÂΤȤ·¤Æ¤Î¥×¥í¥»¥¹¤ËÁ÷¤é¤ì¤ë¥·¥°¥Ê¥ë¤È¡¢ ¸ÄÊ̤Υ¹¥ì¥Ã¥É¤ËÁ÷¤é¤ì¤ë¥·¥°¥Ê¥ë¤ò¶èÊ̤·¤Æ¹Í¤¨¤Æ¤¤¤ë¡£ POSIX.1 ¤Ë¤è¤ë¤È¡¢¥×¥í¥»¥¹¤ËÁ÷¤é¤ì¤¿¥·¥°¥Ê¥ë (Î㤨¤Ð kill(2) ¤ò»È¤Ã¤ÆÁ÷¤ë) ¤Ï¡¢¤½¤Î¥×¥í¥»¥¹¤Ë°¤¹¥¹¥ì¥Ã¥É¤Î¤¦¤Á ¾¡¼ê¤Ë (arbitrarily) ¤ËÁªÂò¤µ¤ì¤¿°ì¤Ä¤Î¥¹¥ì¥Ã¥É¤Ë¤è¤ê½èÍý¤µ¤ì¤ë ¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£LinuxThreads ¤Ï¥×¥í¥»¥¹¤ËÁ÷¤é¤ì¤ë¥·¥°¥Ê¥ë¤Î ³µÇ°¤ËÂбþ¤·¤Æ¤ª¤é¤º¡¢¥·¥°¥Ê¥ë¤ÏÆÃÄê¤Î¥¹¥ì¥Ã¥É¤Ë¤À¤±Á÷¤ë¤³¤È¤¬¤Ç¤¤ë¡£
- -
- ¥¹¥ì¥Ã¥É¤Ï¤½¤ì¤¾¤ì¤ÎÆȼ«¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ÎÀßÄê¤ò»ý¤Ä¡£ ¤·¤«¤·¡¢¿·¤·¤¤¥¹¥ì¥Ã¥É¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ÎÀßÄê¤Ï ¤½¤Î¥¹¥ì¥Ã¥É¤òºîÀ®¤·¤¿¥¹¥ì¥Ã¥É¤«¤é¥³¥Ô¡¼¤µ¤ì¡¢¤½¤Î¤¿¤á ¥¹¥ì¥Ã¥É¤ÏºÇ½é¤Ï°ì¤Ä¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ò¶¦Í¤¹¤ë¡£ (»ÅÍͤǤϡ¢¿·¤·¤¤¥¹¥ì¥Ã¥É¤ÏÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¾õÂÖ ¤Ç³«»Ï¤µ¤ì¤ë¤Ù¤¤È¤µ¤ì¤Æ¤¤¤ë¡£ 2¤Ä¤Î¥¹¥ì¥Ã¥É¤¬¶¦Í¤µ¤ì¤Æ¤¤¤ëÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¾å¤ÇƱ»þ¤Ë ¥·¥°¥Ê¥ë¤Î½èÍý¤ò¹Ô¤Ã¤¿¾ì¹ç¡¢Í½Â¬ÉÔ²Äǽ¤Ê¥×¥í¥°¥é¥à¤Î¥¨¥é¡¼¤¬ µ¯¤³¤êÆÀ¤ë¡£)
NPTL
NPTL ¤Ç¤Ï¡¢°ì¤Ä¤Î¥×¥í¥»¥¹¤ÎÁ´¤Æ¤Î¥¹¥ì¥Ã¥É¤ÏƱ¤¸¥¹¥ì¥Ã¥É¡¦¥°¥ë¡¼¥× ¤Ë°¤¹¤ë; ¥¹¥ì¥Ã¥É¡¦¥°¥ë¡¼¥×¤ÎÁ´¥á¥ó¥Ð¡¼¤ÏƱ¤¸ PID ¤ò¶¦Í¤¹¤ë¡£ NPTL ¤Ï´ÉÍý¥¹¥ì¥Ã¥É (manager thread) ¤òÍøÍѤ·¤Ê¤¤¡£ NPTL ¤ÏÆâÉô¤Ç¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë¤Î¤¦¤ÁºÇ½é¤Î 2¤Ä¤ÎÈÖ¹æ¤ò»ÈÍѤ·¤Æ¤ª¤ê¡¢ ¤³¤ì¤é¤Î¥·¥°¥Ê¥ë¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï»ÈÍѤǤ¤Ê¤¤¡£NPTL ¤Ë¤â POSIX.1 ¤Ë½àµò¤·¤Æ¤¤¤Ê¤¤ÅÀ¤¬¤¤¤¯¤Ä¤«¤¢¤ë:
- -
- ¥¹¥ì¥Ã¥É¤Ï¶¦Ä̤Πnice Ãͤò¶¦Í¤·¤Ê¤¤¡£
NPTL ¤Îɸ½àÈó½àµò¤ÊÅÀ¤Î¤¦¤Á¤¤¤¯¤Ä¤«¤Ï°ÊÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Î¤ßȯÀ¸¤¹¤ë:
- -
- times(2) ¤È getrusage(2) ¤¬ÊÖ¤¹¾ðÊó¤¬¥×¥í¥»¥¹Á´ÂΤξðÊó¤Ç¤Ê¤¯¥¹¥ì¥Ã¥Éñ°Ì¤Î¾ðÊó¤Ç¤¢¤ë (¥«¡¼¥Í¥ë 2.6.9 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
- -
- ¥¹¥ì¥Ã¥É´Ö¤Ç¥ê¥½¡¼¥¹À©¸Â¤ò¶¦Í¤·¤Ê¤¤ (¥«¡¼¥Í¥ë 2.6.10 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
- -
- ¥¹¥ì¥Ã¥É´Ö¤Ç¥¤¥ó¥¿¡¼¥Ð¥ë¡¦¥¿¥¤¥Þ¤ò¶¦Í¤·¤Ê¤¤ (¥«¡¼¥Í¥ë 2.6.12 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
- -
- ¥á¥¤¥ó¥¹¥ì¥Ã¥É¤À¤±¤¬ setsid(2) ¤ò»È¤Ã¤Æ¿·¤·¤¤¥»¥Ã¥·¥ç¥ó¤ò³«»Ï¤¹¤ë¤³¤È¤¬¤Ç¤¤ë (¥«¡¼¥Í¥ë 2.6.16 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
- -
- ¥á¥¤¥ó¥¹¥ì¥Ã¥É¤À¤±¤¬ setpgid(2) ¤ò»È¤Ã¤Æ¤½¤Î¥×¥í¥»¥¹¤ò¥×¥í¥»¥¹¡¦¥°¥ë¡¼¥×¡¦¥ê¡¼¥À¡¼¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤ë (¥«¡¼¥Í¥ë 2.6.16 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
- -
- ¥¹¥ì¥Ã¥É¤Ï¤½¤ì¤¾¤ì¤ÎÆȼ«¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ÎÀßÄê¤ò»ý¤Ä¡£ ¤·¤«¤·¡¢¿·¤·¤¤¥¹¥ì¥Ã¥É¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ÎÀßÄê¤Ï ¤½¤Î¥¹¥ì¥Ã¥É¤òºîÀ®¤·¤¿¥¹¥ì¥Ã¥É¤«¤é¥³¥Ô¡¼¤µ¤ì¡¢¤½¤Î¤¿¤á ¥¹¥ì¥Ã¥É¤ÏºÇ½é¤Ï°ì¤Ä¤ÎÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ò¶¦Í¤¹¤ë (¥«¡¼¥Í¥ë 2.6.16 ¤Ç½¤Àµ¤µ¤ì¤¿)¡£
NPTL ¤Î¼ÂÁõ¤Ç¤Ï°Ê²¼¤ÎÅÀ¤Ë¤Ä¤¤¤Æ¤âÃí°Õ¤¹¤ë¤³¤È:
- -
- ¥¹¥¿¥Ã¥¯¥µ¥¤¥º¤Î¥ê¥½¡¼¥¹¤Î¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È (setrlimit(2) ¤Î RLIMIT_STACK ¤ÎÀâÌÀ¤ò»²¾È) ¤¬ unlimited °Ê³°¤ÎÃͤËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤ÎÃͤ¬ ¿·¤·¤¤¥¹¥ì¥Ã¥É¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥¹¥¿¥Ã¥¯¥µ¥¤¥º¤È¤Ê¤ë¡£ ÀßÄê¤ò͸ú¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¥ê¥ß¥Ã¥ÈÃͤò ÀßÄꤷ¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤¿¤¤¤Æ¤¤¤Ï¡¢¥·¥§¥ë¤ÎÁȤ߹þ¤ß¥³¥Þ¥ó¥É¤Î ulimit -s (C ¥·¥§¥ë¤Ç¤Ï limit stacksize) ¤ò»È¤Ã¤ÆÀßÄꤹ¤ë¡£
¥¹¥ì¥Ã¥É¼ÂÁõ¤ÎȽÄê
glibc 2.3.2 °Ê¹ß¤Ç¤Ï¡¢ getconf(1) ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¡¢ ¥·¥¹¥Æ¥à¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥¹¥ì¥Ã¥É¼ÂÁõ¤òȽÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£ °Ê²¼¤ËÎã¤ò¼¨¤¹:bash$ getconf GNU_LIBPTHREAD_VERSION NPTL 2.3.4
¤¾¤ì°ÊÁ°¤Î glibc ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤Ç ¥Ç¥Õ¥©¥ë¥È¤Î¥¹¥ì¥Ã¥É¼ÂÁõ¤òȽÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
bash$ $( ldd /bin/ls | grep libc.so | awk '{print $3}' ) | \ egrep -i 'threads|ntpl' Native POSIX Threads Library by Ulrich Drepper et al
¥¹¥ì¥Ã¥É¤Î¼ÂÁõ¤ÎÁªÂò: LD_ASSUME_KERNEL
LinuxThreads ¤È NPTL ¤ÎξÊý¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢ LD_ASSUME_KERNEL ´Ä¶ÊÑ¿ô¤ò»È¤¦¤³¤È¤Ç¡¢Æ°Åª¥ê¥ó¥«¤¬¥Ç¥Õ¥©¥ë¥È¤Ç ÁªÂò¤¹¤ë¥¹¥ì¥Ã¥É¼ÂÁõ¤ò¾å½ñ¤¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ ¤³¤ÎÊÑ¿ô¤Ë¤è¤ê¡¢Æ°Åª¥ê¥ó¥«¤¬ÆÃÄê¤Î¥Ð¡¼¥¸¥ç¥ó¤Î¥«¡¼¥Í¥ë¾å¤Ç Æ°ºî¤·¤Æ¤¤¤ë¤È²¾Äꤹ¤ë¤è¤¦¤Ë»ØÄꤹ¤ë¡£ NPTL ¤¬É¬ÍפȤ¹¤ë¥µ¥Ý¡¼¥Èµ¡Ç½¤òÄ󶡤·¤Æ¤¤¤Ê¤¤¥«¡¼¥Í¥ë¥Ð¡¼¥¸¥ç¥ó¤ò »ØÄꤹ¤ë¤³¤È¤Ç¡¢¶¯À©Åª¤Ë LinuxThreads ¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë (¤³¤Î¤è¤¦¤Ê¤³¤È¤ò¤¹¤ëºÇ¤â¤¢¤ê¤½¤¦¤Ê¾ìÌ̤ϡ¢ LinuxThreads ¤Îɸ½àÈó½àµò¤Ê¿¶Éñ¤¤¤Ë°Í¸¤¹¤ë (²õ¤ì¤¿) ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó ¤òÆ°ºî¤µ¤»¤ë¾ì¹ç¤À¤í¤¦)¡£ °Ê²¼¤ËÎã¤ò¼¨¤¹:bash$ $( LD_ASSUME_KERNEL=2.2.5 ldd /bin/ls | grep libc.so | \ awk '{print $3}' ) | egrep -i 'threads|ntpl' linuxthreads-0.10 by Xavier Leroy
´ØÏ¢¹àÌÜ
clone(2), futex(2), gettid(2), futex(7), ¤ª¤è¤Ó Pthreads ¤Î³Æ¼ï¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¡¢Î㤨¤Ð: pthread_atfork(3), pthread_cleanup_push(3), pthread_cond_signal(3), pthread_cond_wait(3), pthread_create(3), pthread_detach(3), pthread_equal(3), pthread_exit(3), pthread_key_create(3), pthread_kill(3), pthread_mutex_lock(3), pthread_mutex_unlock(3), pthread_once(3), pthread_setcancelstate(3), pthread_setcanceltype(3), pthread_setspecific(3), pthread_sigmask(3), pthread_testcancel(3).Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre