これが状況です。私はコード戦争コンテストのフレームワークを書いています。コードが実行されると、ターンごとに、各競技者が提供するライブラリ内のメソッドが呼び出されます。コンテストのルールは、メソッドが1秒以内に戻る必要があるか、メソッドを呼び出すタスクを強制終了することです。次に、そのターンのデフォルトの結果を使用します。
呼び出されたコードがキャンセルに応答することを信頼できないため、このメソッドはキャンセルをサポートしていません。また、スレッドを強制終了する必要があります。これは、無視されたバックグラウンドタスクが10または20ある場合、今後のすべての呼び出しで提供される各呼び出しのクロックサイクルが少なくなり、以前は1秒未満であったメソッドの方が時間がかかるためです。
プラス面として、私たちが殺しているメソッドは、リソースが開いていないなどの必要があります。したがって、中止しても何もハングしたままになることはありません。
更新:ここで覚えておくべき2つのこと。まず、これはゲームのようなものなので、パフォーマンスが重要です。次に、ワーカースレッドでリソースが開かれている可能性はほとんどありません。呼び出されたメソッドの1つが長すぎる場合は、それを中止してすぐに先に進む必要があります。