没写完,后面补,只是笔记
1. 先说进程
进程的优势:CPU时分复用,单核心CPU可以实现宏观上的并行
实现多任务系统需求(多任务需求是客观的)
进程的劣势:
进程间切换开销大
进程间通信麻烦并且效率低下
解决方案就是 线程
2· 线程的引入
2·1 Linux中的线程简介
(1)一种轻量级进程
(2)线程是参与内核调度的最小单元,内核调度调的是线程。
(3)一个进程中可以有多个线程,线程依附于进程存在。
2·2 线程的优势
(1)可以如同进程一样可被OS调度
(2)同一进程的多个线程之间很容易高效率通信
(3)在多核CPU架构下效率最大化
2·3 线程创建 与 回收
(1)pthread_create (这个函数传参时把线程函数绑定)
主线程用来创造子线程
(2)pthread_join
主线程用来等待(阻塞)回收子线程
(3)pthread_detach
主线程用来分离子线程,分离后子线程不必再去回收子进程
2·4 线程取消
(1)pthread_cancel
一般都是主线程调用该函数去取消(让它赶紧死)子线程
(2)pthread_setcancelstate
子线程设置自己是否允许被取消
2·5 线程函数退出
(1)pthread_exit 与 return
(2)pthread_cleanup_push
(3)pthread_cleanup_pop
2·6 获取线程id
pthread_self
3· 进程同步之信号量
类似于 int 类型的cnt。
4· 互斥锁
是0和1 的信号量
互斥锁主要用来实现关键段保护