Linux 多线程控制
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,失败返回错误码。
错误处理机制
传统 POSIX 函数在出错时会设置全局变量 errno,但 pthreads 不会。它通过返回值提供错误码,因此建议优先检查返回值。
线程 ID 和地址空间
pthread_create 创建的线程 ID 是 NPTL 线程库内部使用的标识符,不同于操作系统调度层面的线程 ID。可通过以下函数获取当前线程 ID:
pthread_t pthread_self(void);
2. 线程等待
线程也需要被等待以避免类似'僵尸进程'的问题。
int pthread_join(pthread_t thread, void **retval);
参数说明:
thread:指定要等待的线程。retval:接收目标线程退出时的返回值(若不需要可置为 NULL)。
此函数默认阻塞等待。
获取线程退出值
用户需定义一个 void* 类型变量,并将其地址传入 pthread_join 来获取线程退出状态。
异常处理
线程一旦发生异常会导致整个进程崩溃,因此无需单独处理线程异常,由主进程统一处理即可。
3. 线程终止
线程终止方式包括:
return:从线程函数中返回。pthread_exit(void *retval):主动退出线程并携带返回值。- 注意:不可使用 ,因为这会终止整个进程。


