掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ミューテックすについて (ID:73642)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
例えば, > void Lock(void) > { > while(!Flag); > > Flag = false; > } を, void Lock(void) { if (Flag) { Flag = false; return; } while(true) ; } とした方が無駄がないと考えて,上記のようなコードを出力したのかもしれません。 # 実際にはアセンブリを出力させて読み取るくらいしか方法はありませんが。 まず,複数のスレッドから読み書きする変数は,volatileで修飾しておく必要があります。 これをしない場合,コンパイラは外部からの変更がないものとして最適化を行う可能性があります。 その上で,各種同期オブジェクトを使った方が効率がよくなります。 whileによるbusy-loopと異なり,各種同期オブジェクトによる待機は,利用できない間はCPU時間を使いません。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.