Boost中的重入

时间:2012-01-21 11:04:57

标签: boost reentrancy

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

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

例如,我无法在文档中找到有关boost :: numeric ::ublas∷matrix类重入的声明。那么我可以假设它是可重入的吗?

谢谢!

奥弗

1 个答案:

答案 0 :(得分:1)

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

  • 同时在两个线程中创建两个类型的实例是可以的。
  • 同时在两个线程中使用两个类型的实例是可以的。
  • 同时在两个线程中使用单个对象通常不行。
  • 但是,对两个线程中的一个对象执行只读操作通常都可以。
  • 通常没有特别的努力来“增强”线程安全性,除非特别需要这样做,例如shared_ptr,Asio,Signals2(但不是Signals),等等。看起来像值类型的Boost部分(例如你的矩阵示例)可能根本没有任何特殊的线程安全支持,只留给应用程序。