2008年10月28日のブックマーク (1件)

  • 革命の日々! なんで、pthread_once()なんて存在するの?

    http://d.hatena.ne.jp/amachang/20080612/1213244820 お気に入りなサイトのIT戦記より // ここを volatile にする // (この変数の値はアトミック(つまり、レジスタにだけあってメモリにないということがない変数に)になる) volatile char* p = NULL; pthread_mutex_t m; void* f(void* _p) { // ロックかからない if (p == NULL) { pthread_mutex_lock(&m); // ここからはクリティカルセクション // 一個目の初期化時にここでブロックしたスレッドのために // もう一回 NULL チェック if (p == NULL) { // ここではまだ p に代入しない // 代入したら別スレッドで初期化されていない p が返ってしまう cha

    falseh
    falseh 2008/10/28
    何がバグってるのかを理解するのにしばらくかかった。勉強になった。