线程函数简介

1.线程创建

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);

功能:创建一个新的子线程
参数:
thread:当前创建的线程id
attr:线程的属性,设置为NULL表示以默认的属性创建
start_routine:线程处理函数,如果当前函数执行完毕,则子线程也执行完毕
arg:给线程处理函数传参用的
返回值:成功:0 失败:非0

2.线程等待

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

功能:
阻塞等待一个子线程的退出,可以接收到某一个子线程调用pthread_exit时设置的退出状态值
参数:
thread:指定线程的id
retval:保存子线程的退出状态值,如果不接受则设置为NULL
返回值: 成功:0 失败:非0

3.线程分离

int pthread_detach(pthread_t thread);

功能:使调用线程与当前进程分离,使其成为一个独立的线程,该线程终止时,系统将自动回收它的资源。
参数:
thread:指定的子线程的id
返回值:成功:0 失败:非0

4.线程退出

void pthread_exit(void *retval);

功能:退出正在执行的线程
参数:
retval:当前线程的退出状态值,
这个值可以被调用pthread_join函数的线程接收到
返回值:无

5.线程的取消

int pthread_cancel(pthread_t thread);

功能:取消线程
参数:
thread:要销毁的线程的id
返回值:成功:0 失败:非0

int pthread_setcancelstate(int state, int *oldstate);

功能:设置线程是否被取消
参数:
state:新的状态
PTHREAD_CANCEL_DISABLE:不可以被取消
PTHREAD_CANCEL_ENABLE:可以被取消
oldstate:保存调用线程原来的可取消状态的内存地址
返回值: 成功:0 失败:非0

void pthread_testcancel(void);

功能:
设置线程的取消点
参数:无
返回值:无

int pthread_setcanceltype(int type, int *oldtype);

功能:设置线程是否可以立即被取消
参数:
type:类型
PTHREAD_CANCEL_ASYNCHRONOUS:立即取消PTHREAD_CANCEL_DEFERRED:不立即被取消
oldtype:保存调用线程原来的可取消类型的内存地址
返回值: 成功:0 失败:非0

6.线程退出清理

void pthread_cleanup_push(void (* routine)(void *), void *arg);

功能:将清除函数压栈。即注册清理函数。
参数:
routine:线程清理函数的指针。
arg:传给线程清理函数的参数。
返回值:无

void pthread_cleanup_pop(int execute);

功能:将清除函数弹栈,即删除清理函数。
参数:
execute:线程清理函数执行标志位。
非0,弹出清理函数,执行清理函数。 0,弹出清理函数,不执行清理函数。
返回值:无

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值