• ベストアンサー

pthread_self APIの高速化

HP-UX上でCを使ってスレッドプログラムを書いています。 プログラム内部でスレッドIDを変数に保持して、その変数を元に、pthread_detachなどのAPIをコールするような作りになっているのですが、pthread_self APIで毎回、自スレッドIDを取得するようにすると、処理スピードは遅くなるのでしょうか。(どれくらい?気にするほど?) 感覚的には遅くなりそうな気がしてはいますが、プログラム変数の場合だと、予期しない変数の書き換えが発生した場合(これはこれでバグですので対応が必要になりますが・・・)などに余計な影響を受けることになり、どっちが得策なのか考えあぐんでいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

pthread_selfを呼ぶよりは変数アクセス一つで済むほうが間違いなく速いですが、実際にどれくらい効果があるかは1つのスレッドがpthread_selfをどれほどの頻度で何回呼ぶ作りになっているか次第です。 ひたすらpthread_selfを呼び続けるプログラムでもなければ、体感できるほどの差はなかなか出ないと思います。

nishimry
質問者

お礼

回答ありがとうございました。 プログラム作成時、恐らく、特に理由も無くプログラム変数を使用したものと思われますが、やはり体感するまではいかないですよね。(CPU時間としては、確実に消費しているでしょうが。) 処理自体は散発的(とはいっても、タイミングによっては秒間数から十数回の呼び出しが必要)ですので、どっちがいいのかなかなか難しいところではあります。

関連するQ&A