@WillireamAngel
2018-06-10T07:56:28.000000Z
字数 550
阅读 883
操作系统
信号量:系统资源数量
信号:
- 整形(sem)变量和两个原子操作
- p()sem减少,sem<0,进入等待否则继续
- v()sem+1, sem<=0,唤醒一个等待进程
- p可能阻塞,v不会阻塞
- 线程不会武侠器阻塞在P()
同步,管理,死锁
程序员运用信号量机制,容易出错,不能处理死锁问题
管程:多线程互斥访问共享资源,有一个线程执行管程代码,管程线程可临时放弃互斥访问,等待事件恢复。
对象/模板,收集共享数据,定义访问共享数据的方法。
锁(控制互斥访问),0或多个条件变量(管理共享数据的并发)(每个条件变量对应一个等待队列,资源被占用而处于等待)
awit():阻塞队列,唤醒等待或释放互斥空间
signal():唤醒等待线程
变量释放:Hansen管程(高效)、Hoare管程
读者:只读取不修改
写者:读-读、读-写互斥(读写分离)、写写互斥
优先;读者优先&写者优先