boost :: intrusive中的线程安全保证

时间:2013-03-08 16:24:50

标签: c++ boost c++11 thread-safety

虽然boost::intrusive文档的“线程安全”段落中没有明确提及此案例,但我想知道在以下情况下是否可以考虑boost::intrusive::list::front()安全:

  • 可能有一位作家在名单上呼叫push_back()
  • 该列表至少有一个元素

该列表属于自动取消链接类型。我的直觉告诉我,在这种情况下,front()push_back()没有理由为什么会这样。

1 个答案:

答案 0 :(得分:1)

这绝对是一场竞争。

  

具有对不同实例的读或写访问权的多个线程是   只要插入的对象不同,就是安全的。

这里的关键是不同的实例。您正在同时读取和写入同一个实例,而且规范显然不能保证它的安全性。

实现可能没问题。我认为直觉上可能会这样。但是,规范显然没有对此作出任何保证,你必须承担竞争条件,因为它不能得到保证。