1

在使用多线程时,我需要确保我使用的 boost 类是可重入的(即使每个线程都使用自己的对象实例)。

我很难在 Boost 类的文档中找到关于类可重入性的声明。我在这里错过了什么吗?除非文档中另有明确说明,否则所有 Boost 类都是可重入的吗?或者 Boost 关于重入的文档是一个灰色区域?

例如,我在文档中的任何地方都找不到关于 boost::numeric::ublas∷matrix 类的可重入性的声明。那么我可以假设它是可重入的吗?

谢谢!

提供

4

1 回答 1

1

大多数 Boost 与大多数 STL 和 C++ 标准库类似:

  • 同时在两个线程中创建一个类型的两个实例是可以的。
  • 在两个线程中同时使用一个类型的两个实例是可以的。
  • 同时在两个线程中使用单个对象通常是不行的。
  • 但是在两个线程中对一个对象进行只读操作通常是可以的。
  • 通常没有特别努力“增强”线程安全性,除非有特殊需要,如 shared_ptr、Asio、Signals2(但不是 Signals)等等。Boost 中看起来像值类型的部分(例如您的矩阵示例)可能根本没有任何特殊的线程安全支持,这由应用程序决定。
于 2012-01-21T16:34:57.707 回答