2010-12-20 19 views

答えて

0

デッドロックは、シンクロナイザーを使用してマルチスレッドプログラムをプログラムするのと同じくらい頻繁に発生し、実行していることはわかりません。

ミューテックスを解放する必要があります。たとえば、そのスレッドを起動するために同じミューテックスが必要な場合は、スレッドを待機させる前に、必ずリリースする必要があります。

+0

デッドロックが発生する実際的なアプリケーションの例はありますか? – pappa

+0

同じミューテックスと別のメカニズムを使用する2つのスレッドで2つのコードが実行されているアプリケーションを作成してください(おそらくシンプルにするため)。ミューテックスを解放せずにセマフォを待つと、デッドロックが発生します。 –

0

私は同じ質問をしていました。

経費は重要な考慮事項の1つです。デッドロックの可能性を無視すると、他のアプローチよりも安い です。多くのシステムでは、デッドロックが頻繁に発生しないため(例えば、1年に1回)、他のメソッドの余分な費用は が価値があると思われることがあります。

また、発生した場合、システムがちょっと遅くなり、最終的に再起動が必要になることがあります。私たち全員が慣れ親しんでいる何か。 教科書の引用は、Brian、W.のオペレーティングシステムの基本の323ページからのものです。

しかし、Joaoの言葉通り、開発者は品質の高いコードを作成することができます。だから私はあなたが定期的にデッドロックに直面する可能性がある多くのジャンクプログラムを実行していた場合、理論的には推測します。

0

ユーザープログラムのマルチスレッドプロセスでデッドロックが発生すると、ユーザーアプリケーションが機能しなくなり、オペレーティングシステムのデッドロックとは何の関係もありません。カーネルがリソースを不適切な方法で割り当てると、オペレーティングシステムのデッドロックが発生しますが、これはごくまれに起こります。頻度は1年に1回であり、したがってWindowsやUnixのような一般的なオペレーティングシステムは、デッドロックを無視したダチョウのアプローチを採用しています。

関連する問題