例如,对于MSVC,read-only is thread-safe on containers。Boost的无序容器是否可以线程安全地阅读?
类似线程安全的只读提升吗?
更新: ie我们可以期待`const'方法保证多线程使用没有内存损坏。
例如,对于MSVC,read-only is thread-safe on containers。Boost的无序容器是否可以线程安全地阅读?
类似线程安全的只读提升吗?
更新: ie我们可以期待`const'方法保证多线程使用没有内存损坏。
即将发布的标准定义了所有标准容器的线程安全性,如果升级 实现不符合此保证,我将非常惊讶。特别是,你 应该能够从 任何线程的容器的任何实例中读取,只要没有线程正在修改容器。
通常读取操作是线程安全的。我希望任何实现只读操作的类(或者更一般地说,const
函数)明确地调用线程安全的事实,即而不是。
这就是说,我没有看到任何线程安全保证任何地方。
你为什么说'典型'?我认为只读容器总是*线程安全的。 (即:如果没有对容器元素进行修改) – Nav 2011-03-15 09:23:09
@Nav:当然这是你直觉上期望的。然而,没有什么能阻止一个类有一个'const'函数(我认为没有保证也没有'const',线程安全性不在窗口中),它修改了线程中类的可变成员 - 不安全的态度。我不会这样做,但不能保证。 – Jon 2011-03-15 09:27:09
@Nav我认为Jon的观点是,对于类类型,const意味着 正是程序员认为它应该是什么意思。 一个const成员函数可以访问具有静态生命期的对象, 通过指针,可变变量修改东西,甚至将const修改为 。所有这些都可能需要同步。但是,通常情况下,我会希望库包含一些类型的const函数的通用保证,注意事项 “除非另有说明”。 – 2011-03-15 09:29:13