1、条件变量和互斥锁
条件变量一般和互斥锁一起使用,来弥补互斥锁的不足。总得来说,互斥锁用来规范线程对共享数据的竞争使用,条件变量用来协调各个线程合作完成任务。
2、enum枚举类型
enum typeName { valueName1, valueName2, valueName3, ...... };
typeName是枚举类型的名字,花括号里面的元素(枚举成员)是常量而不是变量,这个一定要搞清楚,因为枚举成员的是常量,所以不能对它们赋值,只能将它们的值赋给其他的变量。
python和C++都有枚举类型,但是不太一样,不要搞混了
3、互斥的实现方法
有软件也有硬件,现在一般是结合在一起
软件的主要思想就是解决那四个准则:空闲让进、忙则等待、有限等待、让权等待。缺点:存在忙等现象。
硬件的主要思想是:用一条指令完成标志的检查和修改这两个操作,或者通过中断屏蔽保证检查和修改作为一个整体。缺点:不能实现让权等待。
4、信号量
信号量是一个二元组{s,p},s表示资源数量,p是一个队列,用来放正在排队想要使用这一资源的进程,即
信号量的值只能由P(wait,调用资源),V(signal归还资源)改变