Post, Quote, Links on our works...
This is a Tumblr for something technical posts

 

c - What are Aggregates and PODs and how/why are they special? - Stack Overflow

To initialize structs in braced-list form, we have to understand on Aggregates.

いきなり出鼻をくじくようですが、プログラミング言語C の言語仕様としては「スレッドセーフ」という用語は直接定義されていません。ただし、スレッドセーフを考える上で重要な用語「データ競合(data race)」は、C 言語仕様の一部として厳密に定義されます。C 11におけるデータ競合とは、次の3条件を全て満たすときに発生します。*2 (1) 同一メモリ位置に対するアクセスにおいて、
(2) 少なくとも一方が変更(modify)操作であり、
(3) 異なるスレッド上から同時に行われるとき。 そして、C 言語仕様では「プログラム中で何らかのデータ競合が発生した場合には、未定義の動作(undefined behavior)を引き起こす」と明言しています。つまり、ひとつでもデータ競合を含むマルチスレッドプログラムの動作結果について、C 言語仕様としては何も保証しないことを意味します。ここでの“何も保証しない”とは、本当に何も保証されていことに注意してください。例えば、データ競合を含むプログラムは偶然正しく動くかもしれないし、運悪く期待する結果とならないかもしれないし、はたまたプログラム実行中に突然異常終了するかもしれないという意味です。*3