线程创建

线程的创建

(1)线程创建函数

功能:创建一个具有制定参数的线程

形参:thread是要创建的线程的线程的id指针

pthread_t类型的定义是:typedef unsigned long int pthread_t;(打印的时候使用%lu或%u的方式)

attr:创建线程时的线程属性(设置NULL表示使用默认线程属性)

start_routine:指向的是线程将要运行的函数

arg:指向的是线程运行函数的形参

返回值:若线程创建成功返回0,;若失败,返回的是错误的编号

(2)等待线程结束函数

pthread_join()即是子线程合入主线程,主线程阻塞等待子线程结束,然后回收子线程资源。

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

?什么是joinable?

在linux下,pthread有两种状态:joinable和unjoinable.如果线程是joinable状态时,当线程函数自己返回退出时或pthread_exit()时不会释放线程所占用的堆栈或线程标识符,只有调用pthread_join才能将这些资源释放。而如果是unjoinable状态,则在线程函数自己返回或退出或pthread_exit()时则会自动释放它所占用的那些资源.

2.unjoinable属性可以在pthread_create时指定,或在线程创建后在线程中pthread_detach自己, 如:pthread_detach(pthread_self()),将状态改为unjoinable状态,确保资源的释放。
 

thread:线程标识符,即线程id,

retval:用户定义的指针,用来存储被等待线程的返回值

返回值:若线程创建成功返回0,;若失败,返回的是错误的编号.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值