さて、これはかなり奇妙な質問ですが、状況はこれです。私が取り組んでいる通信ライブラリがあり、その多くの機能の1つは、ソケットからのすべての着信パケットを受け入れ、必要に応じてそれらを実行するバックグラウンドスレッドです。最も単純な形式では、要求または要求への応答のいずれかを持つことができます。複数のスレッドは、このライブラリを使用して同じソケットでリクエストを送信し、応答が到着したときにバックグラウンドスレッドからのシグナル(イベント)を待機することで送信できます。
バックグラウンドスレッドに関連付けられたデリゲートを定義して、着信要求で発生することを処理します。つまり、このデリゲートからリクエストを送信してみることができます。これはすべてバックグラウンドの受信スレッドと同じスレッド上にあるため、デッドロックになります(スレッドはブロックされ、応答を待機しますが、これは決して発生しません)。これらは私とほとんどの人が避けることを知っている状況ですが、例外をスローする方法があるか、プログラマーがリクエストを送信する特定のメソッドを呼び出そうとしないようにコンパイル時チェックをしたいと思います。受信を処理するスレッドから。