【发布时间】:2011-11-04 15:10:54
【问题描述】:
我目前正在尝试使用tbb::concurrent_vector<T> 表示一个二维数组。这个二维数组将被许多不同的线程访问,这就是为什么我希望它能够最有效地处理并行访问。
我想出了两个解决方案:
使用
tbb::concurrent_vector<tbb::concurrent_vector<T> >来存储它。将所有内容存储在
tbb::concurrent_vector<T>中,并通过x * width + y访问元素
我更喜欢第二个,因为我不想锁定一整行来访问一个元素(因为我假设要访问元素 array[x][y],tbb 实现将锁定 xth 行,然后yth 元素)。
我想知道哪种解决方案对您来说更好。
【问题讨论】:
-
std::vector<tbb::concurrent_vector>呢?我不知道足够多的 TBB 来回答,但这对我来说看起来不错。 -
好吧,如果
std::vector保存行 (tbb::concurrent_vector),如果我尝试在一个线程中添加新行并在另一个线程中删除一行,我会遇到麻烦。跨度> -
这可能取决于您希望容器处理哪些并发操作。
标签: c++ multithreading parallel-processing tbb concurrent-vector