线程的终止分离

1.线程的终止

                这里写图片描述
    注意该函数是针对用户级别的, 其中 retal 必须指向一个全局变量, 或者是一个 malloc 分配的, 因为如果是线程的局部变量, 当该线程退出时, 其他线程不能得到这个变量, 因为线程的局部变量各自私有

2. 现成的取消

                这里写图片描述
    其中thread是线程的 tid

3.线程的等待与分离

    (1)线程的等待
                这里写图片描述
    注意已经退出的线程它的空间并没有被释放, 它所占有的空间仍然在进程内部, 并且进程创建的新的线程不会复用退出线程的空间, 因此对于已经推出的线程而言, 它所占有的空间必须由主线程将其回收. 因为如果主线程不对退出的线程进行空间回收的, 会造成资源泄露.
    上面函数中 thread是线程的tid, 而retval 是一个指针, 这个指针指向一个指针, 它所指向的这个指针指向线程的返回值(对retval进行一次解引用, 可以获取到线程的返回值), 同样成功时返回 0, 失败时返回错误码.. 调用该函数的线程将会被挂起等待, 直到 id 为thread 的线程终止.
    线程退出的几种情况
    1)代码跑完结果正确,
    2)代码跑完结果错误
    线程通过不同方式退出, retval所指向的内容是不同的
    1)如果线程线程是调用了return 终止(主线程不能用, 因为main 函数调用return相当于进程退出), retval 指向线程函数的返回值
    2)如果线程被其他线程调用了 pthread_cancle , 此时 retval 会指向一个常数, PTHREAD_CANCLED, 该常数是被进行了宏定义为 -1
    3)如果该函数是自己调用了 pthread_exit, retval 指向传给pt

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值