[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
229: デフォルトの名無しさん [sage] 2018/03/06(火) 00:47:05 ID:yCnPPW+5(1/3) AAS
mutex g_Mtx;

int g_Val = 0;

int Func( int A, int B )
{
  int Val = A * B;

  lock_guard<mutex> Lock( g_Mtx );

  return g_Val = Val;
}

void ThreadFunc0()
{

}
230
(2): デフォルトの名無しさん [sage] 2018/03/06(火) 00:55:45 ID:yCnPPW+5(2/3) AAS
mutex g_Mtx;
すみません、途中で送信してしまいました。

int g_Val = 0;

int Func( int A, int B )
{
  int Val = A * B;

  lock_guard<mutex> Lock( g_Mtx );

  return g_Val = Val;
}

void ThreadFunc0()
{
  int Val = Func( 2, 3 );

  // Valを参照する処理
}

void ThreadFunc1()
{
  lock_guard<mutex> Lock( g_Mtx );

  // g_Valを参照する処理
}

上記のようなスレッド関数が非同期に実行されるとき、
Func()はスレッドセーフ(g_Val書き換え中に参照されない)でしょうか?

(1)lock_guard<mutex>によるミューテックスロック
(2)g_Valの書き換え
(3)戻り値を読み出し元スレッドにコピー(あるいはムーブ)
(4)lock_guard<mutex>がスコープから外れアンロック

というシーケンスを期待しています。
231: 230 [sage] 2018/03/06(火) 00:58:37 ID:yCnPPW+5(3/3) AAS
誤:読み出し元スレッド
正:呼び出し元スレッド
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s