The Daily WTF 日本語 フォロー CodeSOD: Lock 'Em Dead 提供されたC++コードスニペットは、Deadlock例外の例外ハンドラを示しています。この例外をキャッチすると、コードはretryを試みます。しかし、retryは標準的なC++キーワードではなく、おそらくマクロです。著者は、このマクロがgotoステートメントを使用して実装されていると推測しています。中心的な問題は、retryがデッドロックを解決するという仮定にあります。デッドロックは、2つ以上のスレッドが無限にブロックされ、それぞれが別のスレッドが保持しているリソースを待機している場合に発生します。retryが効果的であるためには、デッドロックされたスレッドが現在保持しているリソースを解放する必要があります。コードの著者であるKevinによると、retryマクロはいかなるリソースも解放しません。代わりに、単にcatchブロックの先頭にジャンプします。これは、スレッドがデッドロック状況に閉じ込められたままであることを意味します。Kevinは、システムがすでに多数のデッドロックに苦しんでいたと指摘しています。コンサルタントがリソースアクセスの順序を変更し、ミューテックス関連の問題を特定することによって、これらの問題に対処するために雇われました。コンサルタントによるretryの実装は、意図せずにさらに多くのデッドロックを導入したようです。Kevinは、コンサルタントが独自のデッドロックを追加するつもりだったのではないかとユーモラスに示唆しています。 CodeSOD: Lock 'Em Dead thedailywtf.com The Daily WTF 日本語 RSS thenote.app
Deadlock例外の例外ハンドラを示しています。この例外をキャッチすると、コードはretryを試みます。しかし、retryは標準的なC++キーワードではなく、おそらくマクロです。著者は、このマクロがgotoステートメントを使用して実装されていると推測しています。中心的な問題は、retryがデッドロックを解決するという仮定にあります。デッドロックは、2つ以上のスレッドが無限にブロックされ、それぞれが別のスレッドが保持しているリソースを待機している場合に発生します。retryが効果的であるためには、デッドロックされたスレッドが現在保持しているリソースを解放する必要があります。コードの著者であるKevinによると、retryマクロはいかなるリソースも解放しません。代わりに、単にcatchブロックの先頭にジャンプします。これは、スレッドがデッドロック状況に閉じ込められたままであることを意味します。Kevinは、システムがすでに多数のデッドロックに苦しんでいたと指摘しています。コンサルタントがリソースアクセスの順序を変更し、ミューテックス関連の問題を特定することによって、これらの問題に対処するために雇われました。コンサルタントによるretryの実装は、意図せずにさらに多くのデッドロックを導入したようです。Kevinは、コンサルタントが独自のデッドロックを追加するつもりだったのではないかとユーモラスに示唆しています。