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つのスレッドの実行完了を待機します。
ミューテックスは使用後に速やかに解放して、デッドロックを避けることに留意すべきです。