タグ

ブックマーク / srad.jp/~oku (2)

  • マルチスレッドなコード中での 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) 実装.楽観的アプローチでデータ競合が生じたらやりなおし?
  • okuの日記 | スラド

    # 5年ぶりの日記か... # 関西行ったり名古屋行ったり関西に戻ったり色々あったものよ... 「『ウェブクロウ』サービス終了のお知らせ」ということなので、既に歴史上の価値しかないと思いますが (それすらないような気もするけど) bs の C++11 FAQ の和訳を starfree.jp にコピーしました。 StarServer Free とて、いつまでサービスが続くか知れたものではありませんが、必要な方はご自由にどうぞ。 # あ、原文が更新されてる... 一応、追従しとこうか 2021-09-19 追記: 原文の2016-08-19版に追従させておきました (多分、リンク先の増減・最新化と、sort のところの誤記訂正だけだと思う)。

    mooz
    mooz 2010/12/14
    c, unix, システムプログラム系
  • 1