91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c++ get set如何實現線程安全

c++
小樊
82
2024-07-26 12:51:12
欄目: 編程語言

在C++中,可以使用互斥鎖(mutex)來實現線程安全的get和set操作。互斥鎖可以確保在多線程環境下同一時間只有一個線程可以訪問某個共享資源,從而避免多線程同時訪問導致的數據競爭問題。

以下是一個簡單的示例代碼,展示如何使用互斥鎖來實現線程安全的get和set操作:

#include <iostream>
#include <thread>
#include <mutex>

class MyClass {
public:
    void set(int value) {
        std::lock_guard<std::mutex> lock(mutex);
        data = value;
    }

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

private:
    int data;
    std::mutex mutex;
};

int main() {
    MyClass obj;
    
    std::thread t1([&obj](){
        for (int i = 0; i < 1000; ++i) {
            obj.set(obj.get() + 1);
        }
    });

    std::thread t2([&obj](){
        for (int i = 0; i < 1000; ++i) {
            obj.set(obj.get() + 1);
        }
    });

    t1.join();
    t2.join();

    std::cout << "Final value: " << obj.get() << std::endl;

    return 0;
}

在上面的示例中,我們創建了一個MyClass類,其中包含一個私有成員變量data和一個std::mutex類型的互斥鎖mutex。在setget方法中,我們使用std::lock_guard來對互斥鎖進行加鎖和解鎖操作,確保只有一個線程可以訪問data成員變量。

main函數中,我們創建了兩個線程t1t2,分別對obj對象的data成員變量進行加1操作。通過使用互斥鎖,我們保證了兩個線程對data的訪問是線程安全的,最終輸出的Final value應該是2000。

0
海淀区| 宁德市| 昌图县| 德令哈市| 花莲县| 五河县| 云霄县| 泗水县| 五指山市| 资中县| 治县。| 浦东新区| 英山县| 宜春市| 香河县| 乐山市| 盘山县| 普定县| 康保县| 林芝县| 肥西县| 嘉义县| 汉川市| 陵水| 东丰县| 中山市| 宕昌县| 扬中市| 湛江市| 象州县| 吉安县| 舞阳县| 邵武市| 收藏| 娄烦县| 普陀区| 东乡| 西昌市| 武城县| 临海市| 平武县|