2010-11-29 63 views
4

在并发编程中,比赛死锁之间有什么区别和共同点(如果有的话)?详细的答案将不胜感激;)。比赛和死锁之间的区别

+0

看看[这个SO问题](http://stackoverflow.com/questions/3130079/difference-between-racearound-condition-and-deadlock)。它很生动。 – 0xa6a 2017-03-30 02:39:01

回答

8

看一看Description of race conditions and deadlocks

竞争条件

当两个线程 在 同时访问共享的变量时,会发生竞争条件。第一个线程读取变量 ,第二个线程 从 变量读取相同的值。然后第一个线程和第二个线程对该值执行其操作 ,并且它们竞争以看 哪个线程可以将最后的值 写入共享变量。 的值将保留写入其值 的线程,因为该线程是 写入的前一个线程写入的值。

死锁

当两个线程 每个锁在 同一时间不同的变量,然后试图锁定 变量,其他线程已经 锁定发生死锁。结果,每个线程停止执行 并等待其他线程释放该变量。 因为每个线程都保存着另一个线程想要的 变量,所以 什么都不会发生,并且线程仍然是 死锁。