C++中的锁和互斥体

6

我已经学习了一段时间的C++,但仍未遇到能够解释那些“野兽”的好书?它们是C++的固有特性吗?如果是,为什么只有像B.S.的《C++程序设计语言》这样的书中才会提到它们?如果不是,哪里可以获取可靠的信息 - 最好是一本书(我不喜欢网络教程),如何定义它们,如何使用等等。非常感谢您的任何有价值的帮助。


你正在寻找如何在C++中使用互斥概念吗? - Suresh
3
锁和互斥锁是一般的编程概念,它们不仅限于C ++,事实上,它们甚至不是当前C ++语言的一部分。 - Charles Salvia
2
新的C++修订版,即C++11,包括锁原语。例如,请参阅此处的参考资料http://en.cppreference.com/w/cpp/thread - user283145
5个回答

9

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

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

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

还有一本即将出版的名为C++ Concurrency in Action的Anthony Williams的书。Anthony Williams是Boost.Thread库的作者。

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


1
对于 Boost.Thread 库来说,所呈现的概念分类和用法是值得一读的,至少可以给它点个赞。 - Matthieu M.
2
C++11现在也具有线程处理功能。例如,请参阅此参考资料 - user283145

5

锁和互斥量不是当前C++标准的一部分,因为它们处理的并发性不属于标准。它们包含在几个库中,各种操作系统有不同的处理方式(POSIX vs. Windows threads)。如果您想要了解并发编程的书籍,可以找到相关内容。您可以在boost和ACE库中找到它们的实现。

线程是C++0x标准的一部分。我不知道是否已经有相关书籍,但维基百科在这里提供了关于新线程特性的简介here。


3

C++ 目前还不支持多线程,因此互斥锁等机制不是该语言的一部分。
通常情况下,需要使用特定于系统的库来实现线程和互斥锁,例如在 Linux 中使用 pthread 库。
也许像 pthread 一样的库过于 C 式,但是有一些 C++ 库可以以C++的方式封装它们,例如 ptypes 或 boost。


1

1

锁和互斥量(即:相互排斥)允许协作线程同步访问共享资源。要了解该概念的简要概述,请阅读维基百科上关于相互排斥的文章。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接