感觉现在的互斥锁不是真正意义上的锁住数据不让其他线程访问。

感觉现在的互斥锁不是真正意义上的锁住数据不让其他线程访问。

假设两个线程A和B,要锁的数据是: int  D;

现在锁的意思很简单,只是“我现在用这个锁呢,别人想用就在那等我用完吧”,A线程和B线程都要有这样的表达:

pthread_mutex_lock(&mutex);
操作数据D...
pthread_mutex_unlock (&mutex);


真正锁的意义应该是“我现在正使用这些数据,别人想访问这些数据,等我不用了再给你”。
比如A线程这样锁住数据D后:
Lock{D};    // 注意是花括号不是圆括号

B线程里即使只有一条执行语句:
D = 9;
也实现了锁住D的功能。因为前面A已经把D锁住了,B执行到这条语句时不能继续,只能等A执行:
Unlock{D};
把D解锁后才能继续。

是不是这样的锁更好些呢? 抛砖引玉~~~


这有讨论:http://bbs.chinaunix.net/thread-4064902-1-1.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值