1.互斥量
1.1 实现原理
为了实现互斥锁操作,大多数体系结构提供了swap
或exchange
指令,该指令的作用是把寄存器和内存单元的数据相交换,由于只有一条指令所以是原子操作,同时在多处理器平台,一个处理器的交换指令在执行时,另一个处理器的交换指令只能处于等待状态。
伪代码如下,mutex
变量为1表示为空闲状态,为0表示为上锁状态。
lock:
movb $0, %al
swap(mutex, al);//原子操作
if(al > 0){
return;
}else{
挂起等待;
}
goto lock;
unlock:
movb $1, mutex //只有一条指令,也是原子操作。
return 0;
1.2 mutex
使用注意事项
尽量不要使用多个锁,如果要使用多个锁要保证使用多个锁的顺序一样,从而避免死锁。