0

sem_trywait()を使用すると、デッドロックまたはライブロックに陥ることができますか?

4

2 に答える 2

0

複数のスレッドがある場合、使用方法に応じて、ほぼすべての関数が潜在的なライブロックまたはデッドロック (またはその両方) に関与する可能性があります。アルゴリズムが重要です。sem_trywait現在、ライブまたはデッドロックを形成する傾向がある場合とそうでない場合がある特定の使用パターンがありますが、関数名だけでは、具体的に答えるのは困難です。

于 2012-07-12T03:09:14.070 に答える
0

2 つのスレッドが、互いのセマフォによってロックされた同じリソースをめぐって競合している場合、E_DEADLK で失敗するはずです。これは正しい動作ですが、それを検出し、発生した場合は再試行する必要があります。言い換えれば、はい、デッドロックする可能性がありますが、システムはこれを検出し、ハングしたままにするのではなく、関数から失敗します。

于 2012-07-12T03:12:28.627 に答える