您好,登錄后才能下訂單哦!
在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對象,并演示了如何使用該類來訪問和修改數組元素,以及如何獲取數組的大小。通過這種方式,我們可以確保在多線程環境下對數組的操作是安全的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。