1
我使用mingw32在Windows上运行使用TBB构建的小程序。它做了一个parallel_for。在我的对象的parallel_for内部对concurrent_hash_map对象进行更改。它开始运行,但后来在尝试使用访问器时抛出SIGSEGV。我不知道问题出在哪里。tbb :: concurrent_hash_map抛出SIGSEGV
我的目标:
class Foobar
{
public:
Foobar(FoobarParent* rw) : _rw(rw)
{
_fooMap = &_rw->randomWalkers();
}
void operator() (const tbb::blocked_range<size_t>&r) const
{
for(size_t i = r.begin(); i != r.end(); ++i)
{
apply(i);
}
}
private:
void apply(int i) const
{
pointMap_t::accessor a;
_fooMap->find(a, i);
Point3D current = a->second;
Point3D next = _rw->getNext(current);
if (!_rw->hasConstraint(next))
{
return;
}
a->second = next;
}
FoobarParent* _rw;
pointMap_t* _fooMap;
};
pointMap_t被定义为:
typedef tbb::concurrent_hash_map<int, Point3D> pointMap_t;
有人可以阐明这个问题光?我是TBB的新手。当apply方法调用a-> second时,该信号被抛出。
最好的地方问TBB论坛。此外,你必须告诉我们你是如何调用parallel_for函数的。 – Nav 2011-03-05 06:25:49
@Nav感谢您的评论。我最终在不使用TBB的情况下重写了这个应用程序。下一次我给TBB一个尝试,我会使用TBB论坛。谢谢! – 2011-03-05 14:40:51