質問編集履歴
4
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -82,7 +82,7 @@
|
|
82
82
|
|
83
83
|
```C++
|
84
84
|
|
85
|
-
volatile atomic_flag shared_lock;
|
85
|
+
volatile std::atomic_flag shared_lock;
|
86
86
|
|
87
87
|
|
88
88
|
|
3
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
**[疑問1]**
|
34
34
|
|
35
|
-
アトミック処理とは、ミュー
|
35
|
+
アトミック処理とは、ミューテックスと同じように排他的処理を提供するが、ミューテックスとは対照的にロックを使用しない。
|
36
36
|
|
37
37
|
つまり、**アトミック処理 = ロックフリー** 完全に同値なものだと解釈してよろしいのでしょうか?
|
38
38
|
|
2
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -241,3 +241,21 @@
|
|
241
241
|
|
242
242
|
|
243
243
|
環境は、g++ Linux です。
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
**[追記]**
|
248
|
+
|
249
|
+
疑問3については、[volatileが必要な場面を見つけ出す](https://teratail.com/questions/114172)の中でChironianさんが触れていることに非常に近いですね。
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
> なるほど。そう言えば、関数呼び出しを挟めば最適化が抑止されたことがありました。そのように規定されているのですね!(lock()が同期用のロックかどうかコンパイラは把握できない筈ですし)
|
254
|
+
|
255
|
+
アトミック変数はどうでしょう? 必要に応じて暗黙的にvolatileになるのでしょうか?
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
アトミック変数がvolatileの性質を含んでいるような気がしますが・・・
|
260
|
+
|
261
|
+
質問中のコードにはなぜvolatileが登場しているんでしょうかね・・・
|
1
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
**[疑問1]**
|
34
34
|
|
35
|
-
アトミック処理とは、ミュータックスと同じように排他的処理を提供するが、ミューテックスとは対
|
35
|
+
アトミック処理とは、ミュータックスと同じように排他的処理を提供するが、ミューテックスとは対照的にロックを使用しない。
|
36
36
|
|
37
37
|
つまり、**アトミック処理 = ロックフリー** 完全に同値なものだと解釈してよろしいのでしょうか?
|
38
38
|
|