信号量:
信号量作为在多核和单核操作系统中都广泛使用的一种处理机制,在处理冲突问题上有重要作用。
信号量仅仅是与一个数据结构有关的计数器,所有内核线程在试图访问这个数据结构之前,都需要检查这个信号量,可以把每个信号量看成一个对象。
组成如下:
- 一个整数变量
- 一个等待进程的链表
- 两个原子方法down()和up()
down()对于信号量的值-1,up+1,如果新的值小于0,就把正在运行的进程加入到这个信号量链表,然后阻塞该进程。如果大于等于0,就激活这个信号量链表中的一个或者多个进程。
自旋锁:
自旋锁在多处理器操作系统中比较常见,自旋锁和信号量类似,当一个进程发现锁被另一个进程占用时,他就不断呈现出“旋转”等待状态直到锁打开。
自旋锁在单处理器无效。