ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Linux之线程(三)

Linux之线程(三)

线程等待

这个有点类似子进程的僵尸问题,无法对其进行回收,要是不等待的话

创建线程是完成任务,主线程要获取新线程的执行结果

pthread_join

参数拆解

  1. pthread_t thread需要等待、回收资源的目标线程句柄(pthread_create输出的 tid)。 限制:
    • 不能等待已被 join 过的线程;
    • 不能等待自身(自 join 直接报错);
    • 不能等待分离态线程(pthread_detach后 join 失败)。
  2. void **retval二级指针, 用来接收线程退出时携带的返回值,分三种场景:
    • 线程return ptr/pthread_exit(ptr)*retval= 你传入的指针;
    • 线程被pthread_cancel取消:*retval = PTHREAD_CANCELED(宏常量);
    • 不需要接收返回值:直接传nullptr

返回值

  • 0:等待 + 回收成功;
  • 非 0:失败(线程不存在、重复 join、分离线程、自等待等)。
返回列表