C++のミューテックスの使い方は?
C++のミューテックスは、共有リソースを保護し、複数のスレッドが同時にリソースにアクセスしないようにに使用され、データ競合や同時実行性の問題を回避します。
- ヘッダーファイルのインクルード:最初に、ミューテックス関連のヘッダーファイルである をインクルードする必要があります。
- ミューテックスオブジェクトを作成:std::mutexクラスを利用してミューテックスオブジェクトを作成します。
std::mutex mtx;
- std::ミューテックス
- ロックする
mtx.lock();
- 排他制御された領域内での共有リソースへのアクセス
// 共享资源的访问和修改
- std::mutex
- ロック解除
mtx.unlock();
排他ロックをロックすると、他のスレッドがロックしようとしても、現在のスレッドがロックを解除するまでブロックされる。
std::lock_guard クラスは、C++ 標準ライブラリで提供され、ロックを忘れた際のデッドロックを回避するのに役立ちます。このクラスは、コンストラクタで自動的にロックし、デストラクタでロックを自動的に解除するため、ミューテックスは常に適切に解放されます。例を以下に示します。
std::mutex mtx;
{
std::lock_guard<std::mutex> lock(mtx); // 自动上锁
// 共享资源的访问和修改
} // 自动解锁
ミューテックスを使用すると、複数のスレッドが共有リソースに安全にアクセスし、データ競合やコンカレンシーの問題を防ぐことができます。