c++のマルチスレッドロックの実装方法

C++では、マルチスレッドのロックを実装するためにstd::mutexを使用することができます。以下は簡単な例です。

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

std::mutex mtx; // 创建一个互斥锁

void printNumber(int num) {
    mtx.lock(); // 加锁
    std::cout << num << std::endl;
    mtx.unlock(); // 解锁
}

int main() {
    std::thread t1(printNumber, 1);
    std::thread t2(printNumber, 2);

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

    return 0;
}

上記の例では、最初にstd::mutexオブジェクトmtxをmutexとして作成しました。次に、printNumber関数の中で、mtx.lock()を使用してロックし、単一のthreadだけがstd::coutの出力文にアクセスできるようにしました。出力が完了すると、mtx.unlock()を使用してロックを解除します。

main関数で、printNumber関数をそれぞれ異なる引数で呼び出す2つのスレッドt1とt2を作成します。最後に、t1.join()とt2.join()を使用して、2つのスレッドの実行完了を待機します。

ミューテックスは使用後に速やかに解放して、デッドロックを避けることに留意すべきです。

bannerAds