C ++中的锁和互斥锁

时间:2009-11-26 14:12:35

标签: c++ mutex

我已经学习了一段时间的C ++并且仍然没有遇到可以解释这些野兽是什么的好书?它们是不可或缺的C ++功能吗?如果是这样的话,它们只是在诸如B.S.的C ++编程语言这样的书中被提及。如果没有,你在哪里可以得到关于它们的可靠信息 - 最好是一本书(不太喜欢网络教程),如何定义它们,如何使用它们等等。 感谢您提供任何有价值的帮助。

5 个答案:

答案 0 :(得分:9)

Locks和Mutexes是并发结构,用于确保两个线程不会同时访问相同的共享数据,从而实现正确性。

当前的C ++标准没有并发工具。

虽然你提到你更喜欢书籍和在线教程,但Herb Sutter的Effective Concurrency column绝对是必读的。

安东尼·威廉姆斯即将出版的书名为C++ Concurrency in Action。 Anthony Williams是Boost.Thread图书馆的作者。

值得一看的另一个线程库是Intel's TBB

答案 1 :(得分:5)

锁和互斥锁不是当前C ++标准的一部分,因为它们处理并发性,而不是标准的一部分。它们包含在几个库中,各种操作系统有不同的处理方式(POSIX与Windows线程)。如果你拿起一本关于C ++并发编程的书,你可能会找到你想要的东西。您可以在boost和ACE库中找到它们的实现。

线程是C ++ 0x标准的一部分。我还没有知道它的任何书籍,但维基百科对新的线程功能有一个模糊here.

答案 2 :(得分:3)

此时C ++不是线程感知的,因此互斥线程等不是语言的一部分 通常,您需要使用特定于系统的库来处理线程和互斥,例如Linux中的pthread库 也许类似pthread的库太像c了,但是有一些C ++库可以用c ++包装它们,就像ptypes或boost一样。

答案 3 :(得分:1)

它们是用于确保并行程序正确性的基本结构。 它们包括Boost和新的C ++标准。

我可以推荐这本书,虽然它不关注C ++:http://www.amazon.com/Art-Multiprocessor-Programming-Maurice-Herlihy/dp/0123705916

答案 4 :(得分:1)

锁和互斥(思考:互斥)允许协作线程同步对共享资源的访问。有关该概念的简要概述,请阅读mutual exclusion上的维基百科文章。

这些概念不是C ++语言的一部分。假设您在POSIX平台上,O'Reilly pthreads book将是一个很好的参考。对于Windows,您可以使用Addison-Wesley的Windows System Programming