1

我得到了一个开发人员实习职位的面试,他们让我明天写一个测试(今天得到了面试邀请,所以这是一个很短的通知)。忍耐一下我和我的问题,但我大约 4 个月没有学过 C++,而且我必须学习两个期中考试,所以我没有太多时间自己去查。

本质上,我想知道 C++ 中的死锁和竞争条件是什么,以及这方面的一些简单和中级示例是什么。

谢谢你的帮助!:)

4

2 回答 2

6

Java 教程有一个很好的轶事来解释死锁:

“死锁描述了两个或多个线程永远被阻塞,互相等待的情况。这里有一个例子。Alphonse 和 Gaston 是朋友,并且非常相信礼貌。一个严格的礼貌规则是,当你向朋友鞠躬时,你必须保持鞠躬,直到你的朋友有机会还弓。不幸的是,这条规则没有考虑到两个朋友可能同时向对方鞠躬的可能性。

这个答案解决了竞争条件。

于 2013-05-29T05:06:31.913 回答
1

如果您在哪个平台上更具体,那么我们可以给出更明确的示例。例如,如果它是 Windows,则使您的进程成为多线程(例如CreateThread)并创建场景,其中每个线程都在竞争可能阻塞 ( CreateEvent& WaitForSingleObject)的资源SendMessage

于 2013-05-29T05:17:11.143 回答