1

pthread ミューテックス用の C/C++ ラッパーを提供するコードを調べていました。コードは、シグナル状態/非シグナル状態のシャドウ変数を保持します。このコードは、pthread_mutex_lockや などpthread_mutex_trylockの関数からの戻り値も無視するため、シャドウ変数はミューテックスの状態を正確に反映しない場合があります (マイナーな競合状態は無視されます)。

pthread はミューテックスの状態を照会する方法を提供しますか? pthread APIをざっと読んでも、それが提供されているようには見えません。で動作する興味深いものも見当たりませんpthread_mutexattr_t

それとも、 を使用しtrylock、依存しEBUSY、取得した場合は所有権を放棄する必要がありますか?

前もって感謝します。

4

1 に答える 1

1

意味がないので、そのような機能はありません。取得しようとせずにミューテックスの状態を照会した場合、取得しpthread_mutex_trylock()た結果は、そのミューテックスの状態を変更する別のスレッドによってすぐに無効になる可能性があります。

于 2013-07-23T13:48:00.233 に答える