Threading Building Blocks 是很优秀的一个库,个人用得很多。
近几天调试程序的时候,发现 tbb 的 _concurrent_queue_impl.h 166 行左右有这么一段代码:
void assign_and_destroy_item( void* dst, page& src, size_t index ) {
T& from = get_ref(src,index);
destroyer d(from);
*static_cast<T*>(dst) = from;
}
亮瞎了我的眼, 它居然先析构内部变量,然后再把它复制出去!难怪我自定义的变量放里面总出问题呢!
这似乎是 TBB 的一个 BUG。
本文探讨了Threading Building Blocks (TBB) 中_concurrent_queue_impl.h文件166行附近存在的一处潜在Bug。该问题表现为在复制对象前先对其进行了析构,可能导致自定义类型的数据损坏。

291

被折叠的 条评论
为什么被折叠?



