c++ - 实现线程安全数组

标签 c++ arrays insert synchronize

我想实现一个类似数组的数据结构,允许多个线程同时修改/插入项目。在性能方面如何获得它?我围绕 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();
    }
};

最佳答案

看看 Boost 库中的 shared_mutex。这允许您有多个读者,但只有一个作者

http://www.boost.org/doc/libs/1_47_0/doc/html/thread/synchronization.html#thread.synchronization.mutex_types.shared_mutex

关于c++ - 实现线程安全数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7553338/

相关文章:

c++ - 如何在 Windows 中更改系统时区?

c++ - 单击按钮时如何更改光标

javascript - 合并排序 : merge function array index zero returning multiple indexes

sql - SQL Server 上的 INSERT OR UPDATE 解决方案

c++ - 基本 3D OpenGL 碰撞检测 C++

javascript - 打印 JavaScript 数组的所有值时遇到困难

javascript - 如何在 javascript 的以下代码中优化对数组的处理?

sql - 如何从一列插入多行?

sql - 插入 PostgreSQL

c++ - Visual Studio C++ 中的智能感知