- C++相談室 part141
177 :デフォルトの名無しさん[sage]:2019/03/05(火) 00:17:46.56 ID:w8adCz4V - セーフなわけがあるか!!1111!11!!!!1!
|
- C++相談室 part141
180 :デフォルトの名無しさん[sage]:2019/03/05(火) 01:03:06.00 ID:w8adCz4V - C++11以降はセーフになったらしい(キリ
ttps://cpprefjp.github.io/lang/cpp11/static_initialization_thread_safely.html
|
- C++相談室 part141
181 :デフォルトの名無しさん[sage]:2019/03/05(火) 01:04:55.09 ID:w8adCz4V - Double Checked Lockingはジャヴァのメモリモデルがうまく対応できてなくて騒ぎになったことがある技法
|
- C++相談室 part141
182 :デフォルトの名無しさん[sage]:2019/03/05(火) 01:11:12.97 ID:w8adCz4V - もし関数内static変数の初期化をDouble Checked Lockingを使わずにスレッドセーフにしようとしたら、
関数に入る度に毎回馬鹿正直にクリティカルセクションに入るために1000クロックぐらい捨てることになってしまうま スピンロックか何かの黒魔術で若干緩和する実装も有り得るかもしれんが基本は ジャヴァではなくてC++の処理系がdouble checked lockingする分には 処理系がサポートするネイティブなアーキテクチャのみ考えれば良いから 問題が生じることは無いはずでとりあえずはめでたいと思うが、
|
- C++相談室 part141
184 :デフォルトの名無しさん[sage]:2019/03/05(火) 01:38:41.08 ID:w8adCz4V - リンカにシンボルを渡す手段がイマイチ決め手に欠くキモス
|
- C++相談室 part141
185 :デフォルトの名無しさん[sage]:2019/03/05(火) 01:40:59.82 ID:w8adCz4V - あと複数の翻訳単位間ではグローバル変数の初期化順序は保証されない(保証しようが無い)から
そういう混乱を避けるために関数内staticは関数に入ったとき初期化されてホスイ 個人的には使わないから知らんが
|