プロが教える店舗&オフィスのセキュリティ対策術

HP-UX上でCを使ってpthreadプログラムを記述しています。
mutexを競合するスレッドが2つあり、
 A) pthread_mutex_lock(&mutex)
 B) pthread_mutex_lock(&mutex)
 A) pthread_mutex_unlock(&mutex)
の流れで処理が流れています。
この時、A)がlockを解放してからB)がlockを獲得できるまで(=pthread_mutex_lockの応答が返ってくるまで)に多少の時間がかかってしまうことはありうるのでしょうか。(現在発生している事象では、0.002秒程度)
マシン性能にも拠ると思いますし、B)スレッドが再開するときのCPU割り当てに時間がかかった等も考えられるのかとは思いますが、スレッドライブラリとしての動きが知りたいです。

A 回答 (1件)

>多少の時間がかかってしまうことはありうるのでしょうか



ありうるでしょうね。スレッドがスリープ状態になり、起床のタイミングはOS任せになるでしょう。
それが問題になるケースの為に、スピンロック用のI/Fがあるようですから。
http://codezine.jp/article/detail/1893?p=2
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
spinlock用の関数もあったんですね。当方の現在のプログラムでspinして待つことは良くないと考えますが、リンクにあるspinとmutexの比較説明でpthreadライブラリについての理解が深まりました。
参考にさせていただきます。

お礼日時:2009/08/31 11:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!