【Linux多线程】 pthread_join函数

函数pthread_join用来等待一个线程的结束,线程间同步的操作。

#include 

int pthread_join(pthread_t thread, void **retval);

描述 :
pthread_join()函数,以阻塞的方式等待thread指定的线程结束。当函数返回时,被等待线程的资源被收回。如果线程已经结束,那么该函数会立即返回。并且thread指定的线程必须是joinable的。

(注:一个线程或者是可汇合的(joinable,缺省值),或者是脱离的(detached)。当一个可汇合的线程终止时,它的线程ID和退出状态将留到另一个线程对它调用pthread_join。脱离线程却象守护进程:当它们终止的时,所有相关资源都被释放,我们不能等待它们终止。如果一个线程需要知道另一个线程什么时候终止,那就最好好吃第二个线程的可汇合状态。)

参数 :
thread: 线程标识符,即线程ID,标识唯一线程。
retval: 用户定义的指针,用来存储被等待线程的返回值。

返回值 :

0代表成功。 失败,返回的则是错误号。

代码:

#include 
#include 
#include 
#include 
void *thread_function(void *arg) 
{
    int i;
    for ( i=0; i<8; i++) 
	{
        printf("Thread working...! %d \n",i);
        sleep(1);
    }
    return NULL;
}

int main(void) 
{
    pthread_t mythread;
  
    if(pthread_create( &mythread, NULL, thread_function, NULL)) 
	{
        printf("error creating thread.");
        abort();
    }
    if(pthread_join(mythread, NULL ) ) 
	{
        printf("error join thread.");
        abort();
    }
    printf("thread done! \n");
    exit(0);
}

gcc执行结果:

【Linux多线程】 pthread_join函数_第1张图片

你可能感兴趣的:(Linux)