互斥锁的缺点

互斥锁有一些缺点:例如,如果忘记对互斥锁解除锁定,会怎么样呢?如果是这样,则试图锁定已经被锁定的互斥锁的任何进程只能永无止境地等到。这些线程就成为僵死(zombie thread),这是一个技术术语,指虽然存在但不能干任何事情的线程。显而易见,我们并不希望这种事情发生。

互斥锁还有另外一个问题,看看在下面的情况下会怎么样?
如果两线程依赖于同一个对象(比方说游戏玩家的状态这一对象,每帧都要访问此状态,在一个普通的游戏中访问频率大约是每秒30~60次)。与此同时,另一个线程需要对此状态做许多处理(如果程序中此函数的效率不高,处理过程最多需要花30秒时间,假定它随时可以锁定互斥锁,即使他不使用锁定的对象也如此)。第一个线程需要很多更新信息,但实质上它中止了很长时间,因为它要等到第二个线程完成,这样游戏看起来就会滞后。
posted @ 2008-07-18 21:59  不染丹心  阅读(...)  评论(...编辑  收藏