标题:一道关于多线程的问题
只看楼主
hys1986
Rank: 2
等 级:论坛游民
帖 子:9
专家分:21
注 册:2011-5-22
结帖率:100%
已结贴  问题点数:20 回复次数:2 
一道关于多线程的问题
一道面试题问以下代码哪里错了;
我觉得是应该先释放B再释放A,不知道是不是简单了点,请求解答.先谢谢大家帮忙了

Find, correct and explain the defect in the following code snippet.

Mutex mA;
Mutex mB;

Take(mA);
Take(mB);

DoSomething();

Release(mA);
Release(mB);
搜索更多相关主题的帖子: 多线程 
2011-05-22 22:41
buffer
Rank: 5Rank: 5
等 级:职业侠客
帖 子:73
专家分:326
注 册:2010-12-31
得分:20 
释放锁没有必要逆序。只要在多个线程中保持一致的顺序就行了。

我觉得这题的问题可能是在Take和Release函数是否满足原子性上。
2011-05-22 23:15
hys1986
Rank: 2
等 级:论坛游民
帖 子:9
专家分:21
注 册:2011-5-22
得分:0 
嗯?我感觉也简单了点,还有个想法
在DO SOMETHING这个方程的时候,如果发生了PROCESS SWTICH,要保证两个线程不能互相锁住?不然的话两个线程就都在互相等待释放..卡住了
不过如果要改的话好像就不那么简单了-_-有简单点的改法么..
2011-05-22 23:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-340780-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.305126 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved