Я хочу реализовать похожую на массив структуру данных, позволяющую нескольким потокам одновременно изменять / вставлять элементы. Как я могу получить это в отношении производительности? Я реализовал класс-оболочку вокруг 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();
}
};