linux man page : pthread_join ¾²·¹µå°¡ Á¾·áµÇ´Â °É ±â´Ù¸°´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=ptread_join">ptread_join</a>(3)

1Àå. ptread_join(3)

Â÷·Ê
1.1Àý. »ç¿ë¹ý
1.2Àý. ¼³¸í
1.3Àý. ¹Ýȯ°ª
1.4Àý. ¿¡·¯
1.5Àý. ¿¹Á¦

´Ù¸¥ ¾²·¹µå°¡ Á¾·áµÇ´Â°É ±â´Ù¸°´Ù.


1.1Àý. »ç¿ë¹ý

#include 

int pthread_join(pthread_t th, void **thread_return);
		


1.2Àý. ¼³¸í

pthread_join ´Â ½Çº°¹øÈ£ th ·Î ½ÃÀÛµÈ ¾²·¹µå°¡ Á¾·áµÇ´Â°É ±â´Ù¸°´Ù. ÀÌ·¯Çå ¾²·¹µåÀÇ Á¾·á´Â pthread_exit(3)·Î Á¾·áµÇ°Å³ª ȤÀº ¸®ÅϵǴ °æ¿ì ¹ß»ýÇÑ´Ù.

¸¸¾à thread_return°ªÀÌ NULL ÀÌ ¾Æ´Ï¶ó¸é, thÀÇ ¸®ÅϰªÀÌ ÀúÀåµÈ ¿µ¿ªÀÌ Àü´ÞµÇ°Ô µÈ´Ù.

th ½Äº°¹øÈ£¸¦ °¡Áö´Â ¾²·¹µå°¡ join µÇ±â À§Çؼ­´Â ¹Ýµå½Ã joinable »óÅÂÀÇ ¾²·¹µå·Î ÀÛµ¿Çϰí ÀÖ¾î¾ßÁö¸¸ ÇÑ´Ù. ¸¸¾à ±â´Ù¸®´Â ¾²·¹µå°¡ pthread_detach(3) ÇÔ¼ö¸¦ ÅëÇØ¼­ detached »óŰ¡ µÇ¾ú°Å³ª ȤÀº pthread_create(3)·Î ½ÇÇàµÉ¶§ PTHREAD_CREATE_DETACHED Ư¼ºÀ¸·Î ½ÇÇàµÇ¾ú´Ù¸é join À¸·Î ±â´Ù¸±¼ö ¾ø°Ô µÈ´Ù.

joinable ¾²·¹µå°¡ Á¾·áµÇ¸é, Á¾·áµÈ´Ù°í ÇÏ´õ¶óµµ Áï½Ã ¸Þ¸ð¸® ÀÚ¿øµîÀÌ ÇØÁ¦ µÇÁö ¾Ê´Â´Ù. pthread_join ÇÔ¼ö¸¦ ¸¸³ª¾ßÁö¸¸ ÀÚ¿øÀÌ ÇØÁ¦µÈ´Ù. ±×·³À¸·Î ¸ðµç joinable ¾²·¹µå¿¡ ´ëÇØ¼­´Â ¹Ýµå½Ã pthread_join À» È£ÃâÇØÁÖ¾î¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ»°æ¿ì ¸Þ¸ð¸® ´©¼ö°¡ ¹ß»ýÇÒ°ÍÀÌ´Ù.


1.3Àý. ¹Ýȯ°ª

¼º°øÇÒ°æ¿ì ¾²·¹µå½Äº°ÀÚÀÎ thread¿¡ ¾²·¹µå ½Äº°¹øÈ£¸¦ ÀúÀåÇϰí, 0À» ¸®ÅÏÇÑ´Ù. ½ÇÆÐÇßÀ»°æ¿ì 0 ÀÌ ¾Æ´Ñ ¿¡·¯ÄÚµå °ªÀ» ¸®ÅÏÇÑ´Ù.


1.4Àý. ¿¡·¯

ESRCH

½Äº°¹øÈ£ th°¡ À߸øµÈ ½Äº°¹øÈ£ ÀÏ °æ¿ì

EINVAL

½Äº°¹øÈ£ th ¾²·¹µå°¡ detached »óÅÂÀϰæ¿ì


1.5Àý. ¿¹Á¦

#include <pthread.h>
#include <stdlib.h>

// ¾²·¹µå ÇÔ¼ö
void *test(void *data)
{
    int i;
    int a = *(int *)data;
    for (i = 0; i < 10; i++)
    {
        printf("%d\n", i*a);
    }
    return (void *)(i * 100);
}

int main()
{
    int a = 100;
    pthread_t thread_t;
    int status;

    // ¾²·¹µå¸¦ »ý¼ºÇÑ´Ù. 
    if (pthread_create(&thread_t, NULL, test, (void *)&a) < 0)
    {
        perror("thread create error:");
        exit(0);
    }

    // ¾²·¹µå°¡ Á¾·áµÇ±â¸¦ ±â´Ù¸°ÈÄ 
    // ¾²·¹µåÀÇ ¸®ÅϰªÀ» Ãâ·ÂÇÑ´Ù. 
    pthread_join(thread_t, (void **)&status);
    printf("Thread End %d\n", status);
    return 1;
}
		

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.