タグ

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

タグの絞り込みを解除

cとglibcに関するmoozのブックマーク (1)

  • マルチスレッドなコード中での rand() は重い? | okuの日記 | スラド

    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 だと違ったりするのでしょ

    mooz
    mooz 2012/02/16
    glibc-2.3.5 の rand(3) 実装.楽観的アプローチでデータ競合が生じたらやりなおし?
  • 1