在论文http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm中提出了一种算法,该算法在本地静态变量的初始化期间不需要保持锁定,但仍然导致通过变量定义的并发控制流等待直到初始化完成。本地静态初始化没有保持锁定可以避免C++ 11中可能出现死锁?
本文说,这具有避免可能的死锁
的核心问题与功能局部静态持续时间的对象初始化,含功能可以同时调用的优点,并且因此定义可以同时执行。未能同步可能会引入竞争条件。显而易见的解决方案是同步。问题是,如果同步涉及在初始化器执行时持有锁,则此类同步可能会导致死锁。
有人可以请举一个例子来说明上述死锁发生在哪里吗?
啊,这是有道理的。该文件还说,GCC使用那种容易出现死锁的算法。链接的答案证明它。谢谢。 –
这个答案刚刚投了两次票。任何人都在关心精心制作?或者它只是一个随机的,无意义的驱动器?我正在提供准确的信息。我相信这个答案是准确的。如果需要阐述,请询问。或者至少在这里留下一个评论,并说明反对票的理由。 –
几个小时前,有人在我的一些答案/问题上有一些downvote的乐趣:http://img40.imageshack.us/img40/5457/snapshot96.png。也许这是同一个用户?如果系统认为它是辱骂性的,那么它就不会计入那些低估。 –