线程间同步

1.互斥量

1.1 实现原理
为了实现互斥锁操作,大多数体系结构提供了swapexchange指令,该指令的作用是把寄存器和内存单元的数据相交换,由于只有一条指令所以是原子操作,同时在多处理器平台,一个处理器的交换指令在执行时,另一个处理器的交换指令只能处于等待状态。
伪代码如下,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使用注意事项

尽量不要使用多个锁,如果要使用多个锁要保证使用多个锁的顺序一样,从而避免死锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值