2

POSIX システム (Linux など) では、複数のスレッドが共通のミューテックスをロックする場合、常に観察されるのはロック順序ですか?それとも、クリティカル セクションで次のスレッドをスケジュールするときにスレッドの優先度がより高い優先度のスレッドにバイアスをかけますか?

標準は動作について何か言及していますか? 私が見る限り、必要なインターフェースしか言及していないように見えるからです。

注意してください、私は POSIX 準拠システム (Linux だけでなく) に関するガイダンスを探しているので、他の OS (QNX、Minix など) の動作を自由に提案してください。

4

1 に答える 1

4

複数のスレッドが同じミューテックスのロックを待機している場合、ミューテックスが使用可能になると、最も優先度の高いスレッドが最初にブロック解除されます。複数のスレッドが同じ優先度を持つ場合、どのスレッドがブロック解除されるかは、使用されるスケジューリング アルゴリズムによって異なります。たとえば、FIFO ポリシーを使用すると、最も長く待機しているスレッドが最初に起動されます。

スレッドの優先度と同期は非常に厄介な領域であり、優先度の逆転でデッドロックが発生しないように十分に注意する必要があります。

Butenhof のProgramming with POSIX Threadsの 5.5 章では、リアルタイム スケジューリングについて説明しています。

于 2012-04-30T09:59:46.153 に答える