ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
ÅÂ±× : Thread
½Ã½ºÅÛÇÁ·Î±×·¡¹Ö
°³¿ä
SMP¿Í °°Àº shared memory multiprocessor architectures¿¡¼ thread´Â º´·Äȸ¦ ´Þ¼ºÇϱâ À§Çؼ »ç¿ëµÈ´Ù. ¾²·¹µå ±¸ÇöÀº Çϵå¿þ¾î º¥´õ¿¡¼ ±×µéÀÚ½ÅÀÇ Çʿ信 ÀÇÇØ¼ ¸¸µé¾î¼ »ç¿ëÇßÀ¸¸ç ÈÄ¿¡ ¼ÒÇÁÅ©¿þ¾î °³¹ßÀÚµéÀÌ °£´ÜÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÀÛ¼ºÇÏ°Ô µÇ¾ú´Ù. UNIX¿¡¼´Â C ¾ð¾î¸¦ À§ÇÑ Ç¥ÁØ thread ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇϴµ¥, IEEE POSIX 1003.1c ¿¡ ±× Ç¥ÁØÀÌ Á¤ÀǵǾî ÀÖ´Ù. À̸¦ POSIX Thread ¶ó°í ºÎ¸£°Ô µÇ¾ú°í, ´õ¿í ÁÙ¿©¼ pthread ¶ó°í ºÎ¸£°í ÀÖ´Ù.
ÀÌ ¹®¼´Â threadÀÇ °³³ä¿¡ ´ëÇØ¼ °£´ÜÈ÷ ¼³¸íÇϰí, ±× ±¸Çö¹°ÀÎ pthread¸¦ ÀÌ¿ëÇÑ º´·Äó¸® ÇÁ·Î±×·¡¹Ö ±â¹ý¿¡ ´ëÇØ¼ ¼³¸íÇÒ °ÍÀÌ´Ù. ¾²·¹µå´Â ¹«¾ùÀ̸ç, ¿Ö ÀÌ¿ëÇϴ°¡
¾²·¹µå´Â ¼¼¹Ì(semi)ÇÁ·Î¼¼½º, ȤÀº Light Weight ÇÁ·Î¼¼½º¶ó°í ºÒ¸®¿ì¸ç, ¿©·¯°³ÀÇ Å¬¶óÀÌ¾ðÆ®¸¦ ó¸®ÇÏ´Â ¼¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨ÀÇ ¼¹öÇÁ·Î±×·¡¹Ö ÀÛ¾÷À» À§Çؼ ÁÖ·Î »ç¿ëµÈ´Ù. ºñ½ÁÇÑ ÀÏÀ» ÇÏ´Â fork(2) ¿¡ ºñÇØ¼ ºü¸¥ ÇÁ·Î¼¼½º »ý¼º ´É·Â°ú, ÀûÀº ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â°Ô Light Weight ÇÁ·Î¼¼½º¶ó°í ºÒ¸®¿ì´Â ÀÌÀ¯ÀÌ´Ù.
º¸ÅëÀÇ À¯´Ð½º ÇÁ·Î¼¼½º´Â main()ÇÔ¼ö¿¡ ÀÇÇØ¼ ½ÃÀÛµÇ°í ½ÇÇàµÇ´Â single ¾²·¹µå ·Î ÀÌ·ç¾îÁö¸ç, ÇϳªÀÇ ¿¬¼ÓµÈ ¸í·É¾îµé¸¸À» ó¸®ÇÑ´Ù. ¹Ý¸é ¸ÖƼ¾²·¹µå ÇÁ·Î±×·¥Àº ¿©·¯°³ÀÇ ¿¬¼ÓµÈ ¸í·É¾îµéÀ» µ¿½Ã¿¡ ó¸®ÇÒ¼ö ÀÖ´Ù.
½º·¹µå´Â ÀÚ±âÀÚ½ÅÀÇ ½ºÅø޸𸮿µ¿ªÀ» °¡Áö°í, ÄÚµåÀÇ Á¶°¢À» ½ÇÇàÇÑ´Ù. ½Ç(real) ÇÁ·Î¼¼½º ¿Í´Â ´Þ¸® ¾²·¹µå´Â ´Ù¸¥ ÇüÁ¦ ¾²·¹µåµé°ú ¸Þ¸ð¸®¸¦ °øÀ¯ÇÏ°Ô µÈ´Ù.(º¸Åë ÇÁ·Î¼¼½º´Â ÀÚ±âÀڽŸ¸ÀÇ ¸Þ¸ð¸®¿µ¿ªÀ» °¡Áø´Ù). ÀÌ·¸µí Àü¿ª ¸Þ¸ð¸®¸¦ °øÀ¯ÇÏ°Ô µÇ¹Ç·Î fork ¹æ½Ä¿¡ ºñÇØ¼ Á»´õ ÀÛÀº ¸Þ¸ð¸®¸¦ ¼ÒºñÇÏ°Ô µÈ´Ù.
fork ¿¡ ºñÇØ¼ thread °¡ °¡Áö´Â ÀåÁ¡Àº À§¿¡¼ ¾ð±ÞÇßµíÀÌ "ºü¸¥ ÇÁ·Î¼¼½º »ý¼º" ´É·Â°ú, ¸Þ¸ð¸® °øÀ¯¿¡ À§ÇÑ"ÀûÀº ¸Þ¸ð¸®ÀÇ »ç¿ë"°ú ¸Þ¸ð¸® °øÀ¯¿¡ µû¸¥ ¾²·¹µå°£ÀÇ Á»´õ ½¬¿î Á¤º¸°øÀ¯ÀÌ´Ù. fork(2) ½Ã½ºÅÛ¿¡¼ ºÎ¸ð¿Í ÀڽݰÀÌ Åë½ÅÀ» À§Çؼ´Â IPC¸¦ »ç¿ëÇØ¾ß Çϸç ÀÌ´Â ²Ï ¾î·Á¿î ÀÛ¾÷ÀÌ µÉ¼öµµ Àִµ¥, ¸Þ¸ð¸®¸¦ °øÀ¯ÇÔÀ¸·Î IPCÀÇ »ç¿ëÀ» ÁÙÀ̸鼵µ ¾²·¹µå°£ Á¤º¸±³È¯À» ½±°Ô ÇÒ¼öÀÖ´Ù.
¾Æ·¡´Â fork()¸¦ ÀÌ¿ëÇÑ ÇÁ·Î¼¼½º »ý¼º°ú pthread_create()¸¦ ÀÌ¿ëÇÑ thread »ý¼º°£ÀÇ ºñ¿ëÀ» ºñ±³ÇÑ Ç¥ÀÌ´Ù.
fork ¿¡ ºñÇØ¼ ¾²·¹µå°¡ ´õ ºü¸¥ ¼öÇà´É·ÂÀ» º¸ÀÌ´Â ÀÌÀ¯´Â fork °¡ ±âº»ÀûÀ¸·Î ¸ðµç ¸Þ¸ð¸®¿Í ¸ðµç ±â¼úÀÚ(ÆÄÀϱâ¼úÀÚµî)À» copy-on-write ¹æ½ÄÀ¸·Î ÀڽĿ¡°Ô º¹»çÇϴµ¥ ºñÇØ¼ ¾²·¹µå´Â ¸¹Àº ºÎºÐÀ» °øÀ¯Çϱ⠶§¹®ÀÌ´Ù. copy-on-write ÀÚü°¡ È¿À²ÀûÀ̱ä ÇÏÁö¸¸, ¸Þ¸ð¸® ÀÚ¿øÀ» °øÀ¯ÇÏ´Â °Íº¸´Ù´Â ´À¸± ¼ö ¹Û¿¡ ¾ø´Ù.
¾Æ·¡´Â ¾²·¹µå »ý¼º°ú ÇÁ·Î¼¼½º »ý¼ºÀÇ ¼º´É¿¡ ´ëÇÑ ¶Ç´Ù¸¥ ÀÚ·á´Ù. ![]() ![]()
Ãâó : http://www.ibm.com/developerworks/kr/library/l-rt7
¹Ý¸é ´ÜÁ¡µµ °¡Áö°í Àִµ¥, ¸ðµç ¾²·¹µå°¡ °°Àº ¸Þ¸ð¸® °ø°£À» °øÀ¯ÇÏ°Ô µÇ¹Ç·Î, ÇϳªÀÇ ¾²·¹µå°¡ À߸øµÈ ¸Þ¸ð¸®¿¬»êÀ» ÇÏ°Ô µÇ¸é, ¸ðµç ÇÁ·Î¼¼½º°¡ ±× ¿µÇâÀ» ¹Þ°Ô µÈ´Ù´Â °ÍÀÌ´Ù. fork µîÀ» ÅëÇÑ ÇÁ·Î¼¼½º »ý¼º¹æ½Ä¿¡ À־ OS °¡ °¡°¢ÀÇ ÇÁ·Î¼¼½º¸¦ º¸È£ÇØÁÜÀ¸·Î ÇÑ ÇÁ·Î¼¼½ºÀÇ ¹®Á¦´Â ÇØ´ç ÇÁ·Î¼¼½ºÀÇ ¹®Á¦·Î ³¡³ª°Ô µÈ´Ù. ±×·¯³ª ¾²·¹µå´Â ÀÌ·¯ÇÑ ÇÁ·Î¼¼½º º¸È£¸¦ ±â´ëÇÒ¼ö ¾ø´Ù. ÇϳªÀÇ ¾²·¹µå¿¡ ¹®Á¦°¡ »ý±â¸é Àüü ¾²·¹µå¿¡ ¹®Á¦°¡ »ý±æ°¡´É¼ºÀÌ Å©´Ù. ÀÌ·± ÀÌÀ¯·Î ¸ÖƼ ¾²·¹µå ÇÁ·Î±×·¥Àº Á»´õ ÁÖÀǸ¦ ±â¿ï¿©¼ ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ¶Ç´Ü ÇϳªÀÇ È帧À» °¡Áö´Â ´ÜÀÏ ÇÁ·Î¼¼½º ÇÁ·Î±×·¥°ú ´Þ¸®, ¿©·¯°³ÀÇ È帧À¸·Î ºÐ¸®°¡ µÇ±â ¶§¹®¿¡, µð¹ö±ëÀ» ÇϱⰡ ±î´Ù·Ó´Ù´Â ¹®Á¦µµ °¡Áø´Ù.
¾²·¹µåÀÇ ÀϹÝÀûÀÎ °³³äÀ» Á¤¸®Çß´Ù.
![]()
ÆÄÀÏÀº ±âº»ÀûÀ¸·Î °øÀ¯Çϸç, ¸Þ¸ð¸® ¿µ¿ªÁß¿¡ »ó´çºÎºÐÀ» °øÀ¯ÇÑ´Ù´Â°É º¼¼ö ÀÖÀ»°ÍÀÌ´Ù. thread ÇÁ·Î±×·¡¹ÖÀÇ ÁÖ¿ä ¿ä¼Òµéº´·Ä ÇÁ·Î±×·¡¹Ö
ÃÖ±×µé¾î - 2009³â 11¿ù ÇöÀç - ¸ÖƼ cpu ÄÄÇ»ÅͰ¡ ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â Ãß¼¼·Î Á¢¾îµé°í ÀÖ´Ù. °ú°Å¿¡´Â ±â¾÷¿¡¼ ¿î¿ëÇÏ´Â ¼¹ö±Þ ÄÄÇ»ÅÍ¿¡¼³ª multi cpu¸¦ º¼ ¼ö ÀÖ¾úÁö¸¸ ÀÌÁ¦ °³ÀÎ PCµµ multi cpu¸¦ »ç¿ëÇÏ´Â°É ¾î·ÆÁö ¾Ê°Ô º¼ ¼ö ÀÖ´Ù. multi cpu°¡ »ç¿ëµÇ¸é¼, º´·ÄÇÁ·Î±×·¡¹Ö ±â¹ýÀÇ Á߿伺ÀÌ ´õ¿í Ä¿Áö°í ÀÖ´Ù.
ÇÏÁö¸¸ º´·ÄÇÁ·Î±×·¥ÀÇ ÀÛ¼º¿¡´Â °í·ÁÇØ¾ßÇÒ ¿©·¯°¡Áö »çÇ×µéÀÌ ÀÖ´Ù. ¶§¶§·Î À̵éÀº ÇÁ·Î±×·¥ÀÇ ÀÛ¼ºÀ» ¸Å¿ì ¾î·Æ°Ô ¸¸µé±âµµ ÇÑ´Ù.
shared memory ¸ðµ¨
¸ðµç ¾²·¹µå°¡ Àü¿ª ¸Þ¸ð¸®°ø°£À» °øÀ¯ÇÏ´Â ¹æ½ÄÀÌ´Ù. ÇÁ·Î±×·¡¸Ó´Â Àü¿ª ¸Þ¸ð¸® °ø°£¿¡ ´ëÇÑ Access µ¿±âÈ¿¡ Ư½Ã ½Å°æÀ» ½áÁà¾ß ÇÑ´Ù. ÀÌµé °ø°£¿¡ ´ëÇØ¼ thread safeness
¾²·¹µå´Â °øÀ¯ÇÏ´Â ¸Þ¸ð¸®°ø°£¿¡ ´ëÇØ¼ ¼·Î Á¦¾î±ÇÀ» ¾ò±âÀ§Çؼ °æÀïÇÏ´Â »óÅ¿¡ ³õÀÏ ¼ö ÀÖ´Ù. ÀÌµé ¾²·¹µå°¡ ÀÚ¿øÀ» ³õ°í °æÀïÇÏ´Â °ÍÀ» Á¦¾îÇÏÁö ¾ÊÀ¸¸é ¾²·¹µå°¡ ¾ÈÀü - safeness - ÇÏÁö ¾ÊÀº »óÅ¿¡ ³õÀÌ°Ô µÈ´Ù.
¿¹¸¦µé¾î ¿©·¯°³ÀÇ ¾²·¹µå°¡ µ¿ÀÏÇÑ library ·çƾÀ» ÀÌ¿ëÇØ¼ ´ÙÀ½°ú °°Àº ÀÛ¾÷À» ÇÑ´Ù°í °¡Á¤Çغ¸ÀÚ.
POSIX thread
ÈçÈ÷ Pthread ¶ó°í ºÒ¸®¿ì¸ç, POSIX ¿¡¼ Ç¥ÁØÀ¸·Î Á¦¾ÈÇÑ thread ÇÔ¼ö¸ðÀ½À¸·Î thread ¸¦ Áö¿øÇϱâÀ§ÇÑ C Ç¥ÁØ ¶óÀ̺귯¸® ¼ÂÀ» Á¦°øÇÑ´Ù. ÀÌÈÄ ¸ðµç ¿¹Á¦´Â Pthread ¸¦ ÅëÇØ¼ ±¸ÇöÇÏ°í ¼³¸íÇÏ°Ô µÉ°ÍÀÌ´Ù. ¾²·¹µåÀÇ »ý¼º°ú Á¾·á
¸ÖƼ ¾²·¹µå ÇÁ·Î±×·¥ÀÌ Ã³À½ ½ÃÀ۵ǾúÀ»¶§ ±×°ÍÀº main()ÇÔ¼ö¸¦ ½ÇÇàÇÏ´Â ´ÜÀÏ ÇÁ·Î¼¼½º »óÅ·ΠÀÛµ¿ÇÏ°Ô µÉ°ÍÀÌ´Ù. À̰ÍÀº ±× ÀÚü·Î ÇϳªÀÇ ¿ÏÀüÇÑ ¾²·¹µåÀÌ´Ù. ÀÌ »óÅ¿¡¼ ¿ì¸®´Â pthread_create(3) ÇÔ¼ö¸¦ ºÎ¸§À¸·Î½á »õ·Î¿î ¾²·¹µå¸¦ »ý¼ºÇÒ¼ö ÀÖ´Ù.
¾²·¹µå¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥Àº ±âº»ÀûÀ¸·Î ¾Æ·¡¿Í °°Àº ¼ø¼·Î ÀÛµ¿ÇÏ°Ô µÈ´Ù. Master Thread
|
| pthread_create() ¿¡ ÀÇÇØ¼ worker »ý¼º
|
+---+----+---+ worker ½ÃÀÛ
| | | |
| | | | °¢°¢ÀÇ worker´Â ±×µéÀÇ ÀÛ¾÷À» ¼öÇàÇÑ´Ù.
| | | |
+---+----+---+ worker ¸¦ Á¾·áÇÑ´Ù.
|
| pthread_join()¿¡ ÀÇÇØ¼ worker ¸¦ join ÇÑ´Ù.
|
Master Thread
worker Àº ¾²·¹µå·Î ¹Ù²Ù¾î »ý°¢ÇÒ¼öµµ ÀÖ´Ù.
¾Æ·¡´Â ¾²·¹µå ÇÁ·Î±×·¥ÀÇ °¡Àå °£´ÜÇÑ ¿¹ÀÌ´Ù.
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
void* do_loop(void *data)
{
int i;
int me = *((int *)data);
for (i = 0; i < 10; i++)
{
printf("%d - Got %d\n", me, i);
sleep(1);
}
}
int main()
{
int thr_id;
pthread_t p_thread[3];
int status;
int a = 1;
int b = 2;
int c = 3;
thr_id = pthread_create(&p_thread[0], NULL, do_loop, (void *)&a);
thr_id = pthread_create(&p_thread[1], NULL, do_loop, (void *)&b);
thr_id = pthread_create(&p_thread[2], NULL, do_loop, (void *)&c);
pthread_join(p_thread[0], (void **) &status);
pthread_join(p_thread[1], (void **) &status);
pthread_join(p_thread[2], (void **) &status);
printf("programing is end\n");
return 0;
}
À§ÀÇ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ½Ã۱â À§Çؼ± pthread ¶óÀ̺귯¸®¸¦ ¸µÅ©½ÃÄÑÁà¾ß ÇÑ´Ù. [yundream@localhost test]# gcc -o thread thread.c -lpthreadÃÖÃÊ¿¡ main() ¾²·¹µå°¡ ½ÃÀÛµÇ°í ³ª¼ pthread_create ¸¦ ÀÌ¿ëÇØ¼ 3°³ÀÇ ¾²·¹µå¸¦ »ý¼º ½ÃÄÖ´Ù. °¢°¢ÀÇ ¾²·¹µå´Â do_loop Äڵ带 ½ÇÇàÇÑ´Ù. ¾²·¹µå°¡ ¸ðµç ÀÛ¾÷À» ¸¶ÃÆ´Ù¸é, pthread_join À» ÀÌ¿ëÇØ¼ ´Ù¸¥ ¾²·¹µå°¡ Á¾·áµÉ¶§±îÁö ±â´Ù¸®°í, ¸ðµç ¾²·¹µå°¡ Á¾·áµÇ¾ú´Ù¸é, main()¾²·¹µå°¡ Á¾·áµÇ°í ÇÁ·Î¼¼½º´Â ¿ÏÀüÈ÷ ³¡³ª°Ô µÈ´Ù.
¾²·¹µåÀÇ »ý¼ºÀº pthread_create()¸¦ È£ÃâÇÔÀ¸·Î½á ÀÌ·ç¾îÁø´Ù. ù¹øÂ° ¾Æ±Ô¸ÕÆ®´Â pthread_t µ¥ÀÌŸ ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ µ¹·ÁÁִµ¥, ¾²·¹µå¿¡ ´ëÇÑ Áö½Ã°ªÀÌ µé¾î ÀÖ´Ù. °¢°¢ÀÇ ¾²·¹µå´Â °¢°¢ÀÇ À¯ÀÏÇÑ pthread_t ¸¦ °¡Áö°í ÀÖ¾î¾ß¸¸ ÇÑ´Ù. À§ÀÇ ÇÁ·Î±×·¥¿¡¼ ¿ì¸®´Â °¢°¢ÀÇ ¾²·¹µå°¡ À¯ÀÏÇÑ p_thread ¸¦ °¡Áöµµ·Ï Çϱâ À§Çؼ »ý¼ºÇÒ ¾²·¹µåÀÇ ¼ö¸¸Å(3)À» ¹è¿·Î ¸¸µé¾ú´Ù. 2¹øÂ° ¾Æ±Ô¸ÕÆ®´Â ¾²·¹µå°¡ ¸¸µé¾îÁú¶§ÀÇ Å¸ÀÔÀÌ´Ù.
(½ºÄÉÁ층 ¿ì¼±¼øÀ§ °°Àº). º¸ÅëÀº NULL °ªÀ» »ç¿ëÇÑ´Ù. ¾²·¹µå ŸÀÔ¿¡ ´ëÇÑ ³»¿ëÀº pthread_attr_init(3) À» ÂüÁ¶Çϱ⠹ٶõ´Ù. 3¹øÂ° ¾Æ±Ô¸ÕÆ®°¡ ¹Ù·Î ¾²·¹µå°¡ ½ÇÇàÇÒ ÄÚµåÀÌ´Ù. 4¹øÂ° ¾Æ±Ô¸ÕÆ®´Â ¾²·¹µå¿¡ ³Ñ°ÜÁÖ°í ½ÍÀº °ªÀ» ¸í½ÃÇØÁÖ¸é µÈ´Ù. ¿©±â¿¡¼´Â °¢ ¾²·¹µå¿¡ ¹øÈ£¸¦ ºÎ¿©ÇϱâÀ§ÇÑ int °ªÀ» ³Ñ°å´Ù.
°¢ ¾²·¹µå´Â 1ºÎÅÍ 10±îÁö Áõ°¡ ½ÃŲ´ÙÀ½¿¡ ¾²·¹µå¸¦ Á¾·áÇϵµ·Ï µÇ¾î ÀÖ´Ù.
±×µ¿¾È ¸ÞÀÎ ¾²·¹µå´Â pthread_join À» È£ÃâÇÏ¿©¼ °¢°¢ÀÇ ¾²·¹µå°¡ Á¾·áÇÒ¶§±îÁö ±â´Ù¸°´Ù. 3°³ÀÇ ¾²·¹µå°¡ ¸ðµÎ Á¾·á°¡ µÈ´Ù¸é ¸ÞÀÎ ¾²·¹µå´Â "programing is end" ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϰí ÇÁ·Î±×·¥À» ¿ÏÀüÈ÷ Á¾·áÇÏ°Ô µÉ°ÍÀÌ´Ù.
pthread_join Àº fork ÀÇ wait(2) ¿Í ºñ½ÁÇÏ´Ù°í º¼¼ö ÀÖ´Ù. fork ¿¡¼µµ ÀÚ½ÄÇÁ·Î¼¼½º°¡ ¸ðµÎÁ×°í ³ª¼ ºÎ¸ðÇÁ·Î¼¼½º°¡ Á×¾î¾ß ÇϵíÀÌ(¿¹¿Ü¸¦ ¸¸µé¼öµµ ÀÖÁö¸¸), ¾²·¹µåµµ ¸ðµç »ý¼ºµÈ ¾²·¹µå°¡ Á¾·áµÈ ´ÙÀ½¿¡ ¸ÞÀÎ ¾²·¹µå°¡ Á¾·áµÇ¾î¾ß ÇÑ´Ù.
pthread_join À» »ç¿ëÇÏ°Ô µÇ¸é ¸ÞÀÎ ¾²·¹µå´Â pthread_join ¿¡ ¸í½ÃµÈ ¾²·¹µå°¡ Á¾·áÇÒ¶§±îÁö ÀáÀÚ¸é¼(sleep)±â´Ù¸®°Ô µÈ´Ù. ÀÌ´Â ¸ðµç ¾²·¹µå°¡ Á¾·áÇϱâ Àü¿¡ ºÎ¸ð¾²·¹µå°¡ Á¾·áÇÏ´Â »çŸ¦ ¸·±â À§Çؼ »ç¿ëµÈ´Ù. ÇϳªÀÇ ¾²·¹µå°¡ ¸ðµçÀÏÀ» Á¾·áÇϰí, pthread_join À» ±ú¿ì°Ô µÇ¸é, ¾²·¹µå°¡ °¡Áö°í ÀÖ´ø ÀÚ¿øµéÀ» ¸ðµÎ µÇµ¹·ÁÁÖ°Ô µÈ´Ù (free). ¸¸¾à ½ÇÇàµÇ°í ÀÖ´Â ¾²·¹µå¸¦ Áï½Ã ÁßÁöÇÏ±æ ¿øÇÑ´Ù¸é pthread_cancel() °ú pthread_testcancel()À» »ç¿ëÇÏ¸é µÈ´Ù. °ø¿ëÀ¸·Î »ç¿ëµÇ´Â ÀÚ¿øÀÇ µ¿±âÈ
À§¿¡¼ ¿ì¸®´Â ¾²·¹µå¸¦ »ç¿ëÇÒ°æ¿ì »ó´çÈ÷ ¸¹Àº ÀÚ¿øÀ» ¼·Î °øÀ¯ÇÏ°Ô µÊÀ¸·Î ¾ò´Â ¿©·¯°¡Áö ÀÌÁ¡¿¡ ´ëÇØ¼ ¾Ë¾ÆºÃ¾ú´Ù. ±×·¯³ª ÇϳªÀÇ ÀÚ¿øÀ» ¿©·¯°³ÀÇ ¾²·¹µå°¡ µ¿½Ã¿¡ °øÀ¯ÇÏ°Ô µÊÀ¸·Î ÀÚ¿øÈ¹µæ¿¡ °üÇÑ ¹®Á¦°¡ ¹ß»ýÇÒ¼ö ÀÖ´Ù. ½ÇÁö·Î ¾²·¹µå¸¦ »ç¿ëÇÏ°Ô µÉ°æ¿ì °¡Àå ÁÖÀÇÇØ¾ß ÇÒÁ¡ Áß Çϳª°¡ ¹Ù·Î ÀÚ¿øÀÇ µ¿½Ã Á¢±Ù¿¡ ´ëÇÑ Á¦¾îÀÌ´Ù.
±âº»ÀûÀ¸·Î ÇϳªÀÇ ¾²·¹µå°¡ ÇϳªÀÇ ÀÚ¿ø¿¡ Á¢±ÙÇϰí ÀÖÀ»¶§, ´Ù¸¥ ¾²·¹µå´Â ±× ÀÚ¿ø¿¡ ´ëÇÑ ÀÌÀü ¾²·¹µåÀÇ ÀÛ¾÷ÀÌ ¸ðµÎ ³¡³ª±âÀü¿£ Á¢±ÙÇÏ¸é ¾ÈµÉ°ÍÀÌ´Ù.
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|