我已经学习了一段时间的C++,但仍未遇到能够解释那些“野兽”的好书?它们是C++的固有特性吗?如果是,为什么只有像B.S.的《C++程序设计语言》这样的书中才会提到它们?如果不是,哪里可以获取可靠的信息 - 最好是一本书(我不喜欢网络教程),如何定义它们,如何使用等等。非常感谢您的任何有价值的帮助。
我已经学习了一段时间的C++,但仍未遇到能够解释那些“野兽”的好书?它们是C++的固有特性吗?如果是,为什么只有像B.S.的《C++程序设计语言》这样的书中才会提到它们?如果不是,哪里可以获取可靠的信息 - 最好是一本书(我不喜欢网络教程),如何定义它们,如何使用等等。非常感谢您的任何有价值的帮助。
锁和互斥体是并发构造,用于确保两个线程不会同时访问相同的共享数据,从而实现正确性。
当前的C++标准没有提供并发工具。
虽然你提到你更喜欢书籍而不是在线教程,但Herb Sutter的Effective Concurrency专栏绝对是必读的。
还有一本即将出版的名为C++ Concurrency in Action的Anthony Williams的书。Anthony Williams是Boost.Thread库的作者。
另一个值得一看的线程库是Intel TBB。
锁和互斥量不是当前C++标准的一部分,因为它们处理的并发性不属于标准。它们包含在几个库中,各种操作系统有不同的处理方式(POSIX vs. Windows threads)。如果您想要了解并发编程的书籍,可以找到相关内容。您可以在boost和ACE库中找到它们的实现。
线程是C++0x标准的一部分。我不知道是否已经有相关书籍,但维基百科在这里提供了关于新线程特性的简介here。
C++ 目前还不支持多线程,因此互斥锁等机制不是该语言的一部分。
通常情况下,需要使用特定于系统的库来实现线程和互斥锁,例如在 Linux 中使用 pthread 库。
也许像 pthread 一样的库过于 C 式,但是有一些 C++ 库可以以C++的方式封装它们,例如 ptypes 或 boost。
它们是用于确保并行程序正确性的基本结构。它们包括Boost和新的C++标准。
我可以推荐这本书,尽管它不专注于C++:http://www.amazon.com/Art-Multiprocessor-Programming-Maurice-Herlihy/dp/0123705916。
锁和互斥量(即:相互排斥)允许协作线程同步访问共享资源。要了解该概念的简要概述,请阅读维基百科上关于相互排斥的文章。
这些概念不是C++语言的一部分。如果您使用POSIX平台,则O'Reilly pthreads book将是一个很好的参考书。对于Windows,您可以选择Addison-Wesley的Windows System Programming。