Linux + glibc のスレッドで新たな謎が。 linux-2.6.13 + x86_64-pc-linux-gnu-gcc-3.4.4 + glibc-2.3.5 (Linux Thread) の組み合わせでしか試していないのですが、マルチスレッドなコードのループ中で rand(3) を使うとすさまじくマシンが重たくなります。 数十個もスレッドを作るとキーボードに反応するのにすら十数秒かかるようになりました。 一方、どういうわけだか rand_r(3) だと大丈夫です。 仮説: ひょっとして、rand(3) の seed を libc 内で弄る際に mutex とか semaphore とかでロックしているのではあるまいか? (疑似乱数の直列性を守るため?) 証明: 面倒なので該当箇所を rand_r(3) に書き換えてほっかむり。 (^^; # NPTL だと違ったりするのでしょ