C语言在标准库中为程序员提供了多线程操作接口。
先从简单操作入手
int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine) (void *arg), void *arg) 线程创建
int pthread_join( pthread_t thread, void * * value_ptr ) 线程等待
int pthread_detach(pthread_t thread) 线程分离
int pthread_exit(pthread_t th, void **thr_return) 线程结束
pthread_t
pthread_t是表示线程号的数据类型。它的出处是/usr/include/bits/pthreadtypes.h。
typedef unsigned long int pthread_t
pthread_create
线程创建函数,为新线程分配资源并且创建成功后线程即开始运行,新线程的线程号即传参进去的线程号。
通过第二个参数指定新线程的属性为“joinable”或“detached”,默认为joinable。若线程属性为joinable,则需要由其他线程调用pthread_join阻塞等待其结束并为之回收资源,不然就成了"僵尸线程";若线程属性为detached,则线程结束后自动回收所有资源。
参数说明
int pthread_create(pthread_t *thread, 目标线程的线程号
pthread_attr_t *attr, 设置线程的属性
void *(*start_routine) (void *arg), 目标函数的起始地址
void *arg) 目标函数的参数