多线程的环境下主要依赖于以下几个函数:

函数作用说明
int pthread_create(
    pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void *), void *restrict arg
);

创建一个线程

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

等待线程退出

  • 目标线程必须是 joinabled 的。

  • 如果目标线程已经退出,这此函数立即返回。

  • 如果多个线程同时等待一个线程,行为未定义。

  • 如果当前线程被取消,则目标线程重新变为可等待状态。

int pthread_detach(pthread_t thread);

将目标线程标记为 detached

  • 线程必须是 joinable 的。

  • detached 的线程退出时资源由系统自动回收。

  • detached 一个已经 detached 的线程行为是未定义的。

取消线程

取消线程主要用到了以下三个 API:

  • pthread_cancel

    用于取消目的线程。

  • pthread_testcancel

    检查线程是否需要退出。如果是,则退出线程。

    只需要在线程不安全的语句之前插入即可。
  • pthread_setcanceltype

  • pthread_setcancelstate;

Last moify: 2023-12-04 13:54:33
Build time:2025-07-18 09:41:42
Powered By asphinx