
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割り当てに時間がかかった等も考えられるのかとは思いますが、スレッドライブラリとしての動きが知りたいです。
No.1ベストアンサー
- 回答日時:
>多少の時間がかかってしまうことはありうるのでしょうか
ありうるでしょうね。スレッドがスリープ状態になり、起床のタイミングはOS任せになるでしょう。
それが問題になるケースの為に、スピンロック用のI/Fがあるようですから。
http://codezine.jp/article/detail/1893?p=2
回答ありがとうございました。
spinlock用の関数もあったんですね。当方の現在のプログラムでspinして待つことは良くないと考えますが、リンクにあるspinとmutexの比較説明でpthreadライブラリについての理解が深まりました。
参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CWnd::OnTimerのスレッドの取得
-
DirectX LPDIRECT3DDEVICE9のマ...
-
スレッドの終了はどうやるんで...
-
WaitForSingleObjectの使い方に...
-
別スレッドからメインダイアロ...
-
メインダイアログが最背面に表...
-
Windows上で、シグナル(SIGTERM...
-
DirectX 11のConsntanBuffer
-
C# スレッドから親ウィンドウへ...
-
C# wavファイルの再生について
-
スレッド内のCString使用
-
スレッドの安全な終了のさせ方
-
メインスレッドのPostMessageと...
-
Macターミナルで実行中のプログ...
-
タスクマネージャーのプロセス...
-
メモリが不足しています(VBA)
-
VBSの処理中一旦処理を止めて再...
-
バックグラウンドのプロセスの...
-
UDP通信におけるbind関数について
-
VB6での二重起動(複数起動)の制...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スレッドの監視方法について
-
VC++スレッドの正しい終了のさ...
-
複数スレッドを動作させるのに...
-
スレッドの安全な終了のさせ方
-
WaitForSingleObjectの使い方に...
-
スレッドにて同一メモリの書き...
-
Windows上で、シグナル(SIGTERM...
-
同一スレッドで、ロックをかけ...
-
マルチスレッド内のループについて
-
sleep関数とは?
-
スレッドの終了はどうやるんで...
-
メインスレッドのPostMessageと...
-
CWnd::OnTimerのスレッドの取得
-
C言語である関数への同時アクセ...
-
別スレッドのデータを受信できない
-
VB2005 シリアル通信のClose処理
-
pthreadの使い方
-
ユーザーインターフェイスの一...
-
Linuxでスレッド優先度って変え...
-
win32 スレッドのハンドルついて
おすすめ情報