【Linux多线程】 pthread_join函数

pthread_join函数用于同步操作,等待指定线程结束并回收资源。它以阻塞方式工作,若线程已结束则立即返回,并允许接收线程的返回值。线程需为joinable状态,否则无法等待。失败时返回错误号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

#include <pthread.h>

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

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

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

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

返回值 :

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

代码:

#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
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执行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值