[解決済み】 std::lock_guard と std::scoped_lock どっちがいい?
2022-04-16 19:33:16
質問
C++17 では、新しいロッククラスである
std::scoped_lock
.
ドキュメントから判断すると、すでに存在する
std::lock_guard
クラスがあります。
何が違うのか、どんな時に使えばいいのか?
どのように解決するのですか?
唯一かつ重要な違いは
std::scoped_lock
は、複数のミューテックスを受け取るバリアディックコンストラクタを持っています。これにより、複数のミューテックスをロックしてデッドロックを回避することができます。
std::lock
を使用した。
{
// safely locked as if using std::lock
std::scoped_lock<std::mutex, std::mutex> lock(mutex1, mutex2);
}
以前は、複数の Mutex を安全にロックするために
std::lock
の説明のとおりです。
この答え
.
スコープロックを追加することで、より使いやすくなり、関連するエラーも回避することができます。を考えることができます。
std::lock_guard
は非推奨です。の引数が1つの場合は
std::scoped_lock
は特殊化として実装することができますので、パフォーマンスの問題を心配する必要はありません。
GCC 7 では、すでに
std::scoped_lock
を見ることができます。
こちら
.
より詳細な情報は 規格書
関連
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] constexpr` と `const` の相違点
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】なぜC++プログラマは'new'の使用を最小限に抑えなければならないのでしょうか?
-
[解決済み】C++のクラスのprivateとprotectedのメンバの違いは?
-
[解決済み】 std::unique_lock<std::mutex> と std::lock_guard<std::mutex> のどちらを選ぶ?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み】 std::unique_lock<std::mutex> と std::lock_guard<std::mutex> のどちらを選ぶ?