温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

自定义C++ Array类以支持元素级别的线程安全

发布时间:2024-07-19 14:16:06 来源:亿速云 阅读:81 作者:小樊 栏目:编程语言

在C++中实现一个线程安全的Array类,可以通过使用互斥锁来保护对数组元素的访问。以下是一个示例实现:

#include <iostream>
#include <vector>
#include <mutex>

class ThreadSafeArray {
private:
    std::vector<int> data;
    std::mutex mutex;

public:
    ThreadSafeArray(int size) : data(size) {}

    int& operator[](int index) {
        std::lock_guard<std::mutex> lock(mutex);
        return data[index];
    }

    void resize(int size) {
        std::lock_guard<std::mutex> lock(mutex);
        data.resize(size);
    }

    int size() {
        std::lock_guard<std::mutex> lock(mutex);
        return data.size();
    }
};

int main() {
    ThreadSafeArray array(5);

    // 使用线程安全的Array类
    array[0] = 1;
    array[1] = 2;
    array[2] = 3;
    array[3] = 4;
    array[4] = 5;

    // 获取数组大小
    std::cout << "Array size: " << array.size() << std::endl;

    return 0;
}

在上面的示例中,我们定义了一个ThreadSafeArray类,其中包含一个std::vector作为数据存储,并使用std::mutex来保护对数组元素的访问。通过在数组操作中使用std::lock_guardstd::mutex,可以确保在访问数组元素时只有一个线程能够进行操作,从而实现线程安全。

在main函数中,我们创建了一个ThreadSafeArray对象,并演示了如何使用该类来访问和修改数组元素,以及如何获取数组的大小。通过这种方式,我们可以确保在多线程环境下对数组的操作是安全的。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI