マルチスレッド プログラミングでは、ミューテックス ロック (ミューテックス) を使用すると、複数のスレッドが同時に共有データにアクセスするのを防ぎ、データの競合や不整合を回避できます。主な機能は次のとおりです。 1. 共有データの保護 2. スレッドの同期。 C++ では、ミューテックス オブジェクトは std::mutex を通じて作成および使用できます。共有データはロックを取得した後にのみアクセスでき、他のスレッドはロックが解放された後にのみロックを取得できます。
C++マルチスレッドプログラミングにおけるミューテックスの役割
マルチスレッドプログラミングでは、複数のスレッドが共有データに同時にアクセスすると、データの競合や不整合が発生する可能性があります。これを防ぐには、ミューテックスを使用して、共有データに同時に 1 つのスレッドのみがアクセスできるようにすることができます。
mutex とは
Mutex は、スレッドが共有リソースに相互に排他的にアクセスできるようにする同期プリミティブです。スレッドがミューテックス ロックを取得した後は、そのスレッドがロックを解放するまで他のスレッドはロックを取得できません。
ミューテックスの役割
マルチスレッドプログラミングでは、ミューテックスには主に次の機能があります:
ミューテックスの使い方
C++ では、std::mutex
を使用してミューテックス オブジェクトを作成および使用できます: std::mutex
来创建和使用 mutex 对象:
// 创建一个 mutex 对象 std::mutex m; // 获取 mutex 的锁 m.lock(); // 访问共享数据或执行操作 // 释放 mutex 的锁 m.unlock();
实战案例
下面是一个使用 mutex 保护共享数据的实战案例:
#include <iostream> #include <thread> #include <mutex> std::mutex m; int shared_data = 0; void increment_shared_data() { m.lock(); shared_data++; m.unlock(); } int main() { std::thread t1(increment_shared_data); std::thread t2(increment_shared_data); t1.join(); t2.join(); std::cout << "Final value of shared_data: " << shared_data << std::endl; return 0; }
在这个案例中,两个线程同时执行 increment_shared_data()
函数来对 shared_data
进行自增操作。由于 increment_shared_data()
函数中使用了一个 mutex 来保护共享数据,因此保证了两个线程不会同时访问 shared_data
rrreee
increment_shared_data()
関数を同時に実行して、shared_data
に対して自動インクリメント操作を実行します。 >。ミューテックスは共有データを保護するために increment_shared_data()
関数で使用されるため、2 つのスレッドが同時に shared_data
にアクセスしないことが保証され、それによってデータの競合が回避されます。 🎜以上がC++ マルチスレッド プログラミングにおけるミューテックスの役割は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。