我在目录/ home / is_admin / tbb40_233oss /
中的centos中安装了线程构建块(http://threadingbuildingblocks.org/ver.php?fid=174)这是我的代码:
#include "tbb/concurrent_queue.h"
#include <iostream>
using namespace std;
using namespace tbb;
int main() {
concurrent_queue<int> queue;
for( int i=0; i<10; ++i )
queue.push(i);
for( concurrent_queue<int>::const_iterator i(queue.begin());
i!=queue.end(); ++i )
cout << *i << " ";
cout << endl;
return 0;
}
我使用以下命令编译代码:
g++ test_concurrent_queue.cpp -I/home/is_admin/tbb40_233od/linux_intel64_gcc_cc4.1.2_libc2.5_kernel2.6.18_release -ltbb -o tcq
但它会出现此错误:
class tbb::strict_ppl::concurrent_queue<int, tbb::cache_aligned_allocator<int> > has no member named begin
class tbb::strict_ppl::concurrent_queue<int, tbb::cache_aligned_allocator<int> > has no member named end
我找不到原因?有人有tbb经验可以帮助我吗?
答案 0 :(得分:2)
编辑:
您使用的文档已过时,不再适用于concurrent_queue
。我的其余部分仍然有效。
由于concurrent_queue
没有begin
或end
方法:
http://threadingbuildingblocks.org/files/documentation/a00134.html
有一个unsafe_begin
和一个unsafe_end
方法,以这种方式命名,因为如果你的队列没有被多个线程使用,那么你应该只使用它们(也就是说,它们是在多线程环境中使用不安全的。)
运行队列的一般方法是弹出元素,直到它为空:
int i;
while(queue.try_pop(i)) // as long as you can pop, pop.
cout << i << " ";