第十章第二节 线程的创建与结束
创建线程
创建一个线程使用函数pthread_create,其定义如下。
1 | /* |
一个用户可打开的线程数量不能超过RLIMIT_NPROC软资源限制;此外,系统上所有用户能创建的线程总数也不能超过/proc/sys/kernal/threads-max内核参数所定义的值。
线程创建好之后,内核将调度内核线程来执行func所指向的函数。
结束线程
线程函数在结束时推荐调用pthread_exit,以保证线程安全、干净的退出。
1 | /* |
pthread_exit向线程的回收者传递其退出信息,它执行完后不会返回调用者,永远不会失败。
回收线程
一个进程的所有线程都可以调用pthread_join函数来回收其他线程(前提是目标线程可回收),即等待其他线程结束,pthread_join函数定义如下。
1 | /* |
pthread_join函数会一直阻塞直到被回收的线程结束。
pthread_join可能引发如下错误码。
异常终止
若一个线程希望异常终止另一个线程,即取消线程。可使用pthread_cancel函数实现。
1 | /* |
接收到取消请求的目标线程可以决定是否允许被取消以及如何取消。分别由如下两个函数实现。
1 | /* |