我希望能够实现一个类似数组的数据结构,允许多线程同时修改/插入项目。如何在性能方面获得更好的效果?我实现了一个 std::vector 的包装类,并使用关键段来同步线程。请看下面我的代码。每当一个线程想要处理内部数据时,它可能需要等待其他线程。因此,我认为它的性能并不好。 :( 是否有任何想法?
class parallelArray{
private:
std::vector<int> data;
zLock dataLock; // my predefined class for synchronizing
public:
void insert(int val){
dataLock.lock();
data.push_back(val);
dataLock.unlock();
}
void modify(unsigned int index, int newVal){
dataLock.lock();
data[index]=newVal; // assuming that the index is valid
dataLock.unlock();
}
};
push_back
,如果它无法分配新的内存块)。仍然建议非常明智:始终使用RAII来持有资源,而锁是一种资源。 - David Rodríguez - dribeas