回答編集履歴

1

補足

2018/02/15 12:54

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- ヒープ領域を複数のスレッドで同時アクセスする場合、多少は起きにくいですが、複数のスレッドでポインタ経由で同じヒープ上のオブジェクトを共有することも油断すると発生しますので、やはり危険です。(C++ではないですが、C#のGUIオブジェクトが該当します。)
21
+ ヒープ領域を複数のスレッドで同時アクセスする場合、多少は起きにくいですが、複数のスレッドでポインタ経由で同じヒープ上のオブジェクトを共有することも油断すると発生しますので、やはり危険です。(例えば、C++ではないですが、C#のGUIオブジェクトが該当します。)
22
22
 
23
23
 
24
24
 
@@ -43,3 +43,9 @@
43
43
 
44
44
 
45
45
  基本的にはその通りです。しかし、ロック機構は[デッドロック](https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%83%E3%83%89%E3%83%AD%E3%83%83%E3%82%AF)のリスクがありますので、必ずしも安全になるわけではありません。ロックする時はデッドロックしないことに要注意です。経験的にはスレッドを終了させる際に発生しやすいです。(呼び出し側がスレッド終了を待ち、スレッドは呼び出し側スレッドの応答を待っているなど。)
46
+
47
+
48
+
49
+ とはいえ、同じメモリへの書き込みと読み出しがあるなら、通常は比較的安易にMutexでロックしてます。
50
+
51
+ そして、複数のロックを待つ処理がないことをチェックしています。