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。