注册 登录
编程论坛 C++教室

一道关于多线程的问题

hys1986 发布于 2011-05-22 22:41, 399 次点击
一道面试题问以下代码哪里错了;
我觉得是应该先释放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);
2 回复
#2
buffer2011-05-22 23:15
释放锁没有必要逆序。只要在多个线程中保持一致的顺序就行了。

我觉得这题的问题可能是在Take和Release函数是否满足原子性上。
#3
hys19862011-05-22 23:22
嗯?我感觉也简单了点,还有个想法
在DO SOMETHING这个方程的时候,如果发生了PROCESS SWTICH,要保证两个线程不能互相锁住?不然的话两个线程就都在互相等待释放..卡住了
不过如果要改的话好像就不那么简单了-_-有简单点的改法么..
1