目录
用到的知识
多线程
线程是内核调度的最小单元,一种轻量级的进程,进程中可以有多个线程。前面说过每个进程有它自己独立的运行空间,而在同一个进程内的多线程是运行在同一片地址空间的,所以它们之间通信比起进程间通信就容易多了。多线程实现了多核心CPU架构(又叫对称多处理器架构(SMP))的效率最大化,在微观上是真正意义的并行。它们就好比进程的几个分支,最终汇聚成进程这条大河。跟线程常见的函数有以下几个:
线程创建和回收
- pthread_create:在进程中创建一条新线程
- pthread_join:回收子线程(阻塞)
- pthread_detach:分离子线程,分离后进程不必回收子线程
- 注意: pthread_join和pthread_detach只能选择其中的一个
线程取消函数
- pthread_cancel:取消子线程,让它停止运行
- pthread_setcancelstate:子线程设置自己是否可以被取消
- pthread_setcanceltype:子线程设置被取消的类型,只有允许自己被取消时这个设置才有意义
线程退出函数
- pthread_exit:线程返回(退出)的时候一般调用这个函数,也可以return,但不可以调用exit函数,因为exit是整个进程都退出了
- pthread_cleanup_push:将要清理的线程压入栈
- pthread_cleanup_pop:弹出栈中的线程
获取线程的id
- pthread_self
线程函数的使用方法可以通过man手册查看
注意:编译线程的时候要加参数-lpthread