2011-03-15 63 views

回答

1

即将发布的标准定义了所有标准容器的线程安全性,如果升级 实现不符合此保证,我将非常惊讶。特别是,你 应该能够从 任何线程的容器的任何实例中读取,只要没有线程正在修改容器。

1

通常读取操作是线程安全的。我希望任何实现只读操作的类(或者更一般地说,const函数)明确地调用线程安全的事实,即而不是

这就是说,我没有看到任何线程安全保证任何地方。

+0

你为什么说'典型'?我认为只读容器总是*线程安全的。 (即:如果没有对容器元素进行修改) – Nav 2011-03-15 09:23:09

+0

@Nav:当然这是你直觉上期望的。然而,没有什么能阻止一个类有一个'const'函数(我认为没有保证也没有'const',线程安全性不在窗口中),它修改了线程中类的可变成员 - 不安全的态度。我不会这样做,但不能保证。 – Jon 2011-03-15 09:27:09

+2

@Nav我认为Jon的观点是,对于类类型,const意味着 正是程序员认为它应该是什么意思。 一个const成员函数可以访问具有静态生命期的对象, 通过指针,可变变量修改东西,甚至将const修改为 。所有这些都可能需要同步。但是,通常情况下,我会希望库包含一些类型的const函数的通用保证,注意事项 “除非另有说明”。 – 2011-03-15 09:29:13