线程相关函数

线程相关函数

(在Linux中要使用线程需要借助第三方库 ----- pthread线程库,多线程代码编译时需要添加线程库 -pthread)

  • 创建线程(pthread_create函数)
    头文件:
    #include <pthread.h>
    原型:
    int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
    返回值:
    成功返回0,失败返回错误

参数:
thread - 传出参数,传出创建线程的ID
attr - 线程属性,给NULL表示使用默认属性
start_rountine - 线程函数,启动线程后会去执行的代码
arg - 传递给线程函数的参数

  • 线程结束(pthread_exit函数)
    头文件:
    #include <pthread.h>
    原型:
    void pthread_exit(void *retval);

参数:
retval — 线程的返回值

  • 等待线程结束(pthread_join函数)(阻塞函数)
    头文件:
    #include <pthread.h>
    返回值:
    成功返回0,失败返回错误
    int pthread_join(pthread_t thread, void **retval);

参数:
thread - 要等待线程ID
retval - 传出参数,传出退出线程的退出值

  • 线程的分离状态(pthread_detach函数)
    头文件:
    #include <pthread.h>
    原型:
    int pthread_detach(pthread_t thread);
    (注:一个线程要么就使用pthread_join去回收资源,要么设置为分离状态;既不是分离状态也没有join的线程的资源没有保证)

参数:
thread — 要设置分离状态的线程ID

  • 线程的取消(pthread_cancel函数)
    头文件:
    #include <pthread.h>
    原型:
    int pthread_cancel(pthread_t thread);
    (注:很多系统函数在执行过程中不能取消,等这些函数执行完之后才能取消)

参数:
thread — 要取消的线程ID

  • 线程的退出处理函数(pthread_cleanup_push/pthread_cleanup_pop函数)
    头文件:
    #include <pthread.h>
    原型:
    void pthread_cleanup_push(void (*routine)(void *),void *arg);
    void pthread_cleanup_pop(int execute);
    (注:pthread_cleanup_push()/pthread_cleanup_pop()是两个宏,两个宏内部分别包含 { 和 };这两个函数必须成对出现)
    (如果不希望pop函数执行,将该函数的调用语句写到线程退出代码之后)
    以下情况线程退出处理函函数会被自动调用
    1)线程中调用pthread_exit函数退出线程
    2)线程被取消(pthread_cancel)

参数:
routine - 退出处理函数
arg - 传递给退出处理函数的参数
exeute - 决定取出后函数是否执行
0 - 不执行
非0 - 执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值