多线程编程:原理、实践与调度策略
1. 多线程编程基础
1.1 POSIX线程API
多线程编程的接口是POSIX线程API,通常称为pthreads。它最早在IEEE POSIX 1003.1c标准(1995年)中定义,作为C库的一部分(libpthread.so)实现。过去15年左右,有两种pthreads实现:LinuxThreads和Native POSIX Thread Library(NPTL)。NPTL更符合规范,特别是在信号处理和进程ID处理方面,现在占据主导地位,但一些旧版本的uClibc可能仍使用LinuxThreads。
1.2 创建新线程
创建线程使用 pthread_create(3)
函数:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
该函数创建一个新的执行线程,从 start_routine
函数开始执行,并将线程描述符存储在 thread
指向的 pthread_t
变量中。新线程继承调用线程的调度参数,但可以通过 attr
参数覆盖。线程会立即开始执行。
pthread_t
是程序内部引用线程的主要方式,也可以使用