2004-09-09から1日間の記事一覧

読書(Game Programming Gems 2)

ゲーム屋の知人にGame Programming Gems 2 日本語版をお借りし、「マイクロスレッド」関係の2つの章だけ読書。MicroThreadって、インラインアセンブラの練習課題としてもってこいだと思う。答えも、各種スクリプト言語(Pythonとか)のソースコードの中にある…

localtimeやstrtokは本当にスレッドセーフにできないのか (3): GCC __thread keyword

C++

3.3以降のgccを使っているのであれば、pthread_getspecific関数を使うのと同様のことを、特殊なキーワード __thread を使って実現できます。上で示したlocaltime関数の、長ったらしいソースコードは、次のように簡潔に書き直せます。 #include <time.h> #include <stdlib.h> st</stdlib.h></time.h>…

localtimeやstrtokは本当にスレッドセーフにできないのか (2)

C++

localtime関数は、返却するデータを、スレッド固有データ(Thread Specific Data, 略して TSD*1 )として確保すれば、スレッドセーフな関数として実装できると思います。 グローバル変数や、関数内で宣言されたstatic変数など、「静的な記憶期間をもつ変数」は…

localtimeやstrtokは本当にスレッドセーフにできないのか (1)

C++

googleから私の日記に、localtime_r や strtok_r, getpwnam_r などのキーワードで飛んでくる方が結構多いので、ちょっと関連する話題を書いてみます(内容の割に長い…)。 さて、8/9の日記で、POSIXのlocaltimeという関数(下記)を取り上げ、 struct tm *localt…