タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

cと排他制御に関するkenichiiceのブックマーク (1)

  • volatileが必要な場面を見つけ出す

    1#include<signal.h> 2 3sig_atomic_t interrupted; 4 5void sigint_handler(int signum){ 6 interrupted = 1; 7} 8 9int main(){ 10 signal(SIGINT, sigint_handler); 11 while(!interrupted){ 12 [何かの処理] 13 } 14 return 0; 15} このコードは sig_atmoic_t interrupted にvolatileが付いていないので最適化するとバグります。 main()からの読み取りは、コンパイラの最適化によって削除されてしまう可能性がある。 真っ先に思ったこと:「知らねぇぇぇ・・・ & なんで??」 最適化によって削除されたり、変更されたりする変数を把握することができません。 **つまり、vola

    volatileが必要な場面を見つけ出す
    kenichiice
    kenichiice 2018/02/20
    「「マルチスレッドアプリ開発ではvolatileが必要」という主張は、C/C++言語においては全くの誤りです。これらは昔のC/C++開発環境を前提としているか、他言語の話題と混同されているケースが大半です。 」
  • 1