3

複数のスレッドがセマフォで例外をスローした場合はどうなりますか。

sempahoreが一度に入ることができる10個のスレッドを持つことができ、スレッド#2,5,6,7,9が例外をスローし、次に例外をスローしない他のスレッドが正常に実行されるか、中止されるとします。

どういうわけかAggregatedExceptionクラスに関連していますか。

4

2 に答える 2

1

例外が発生したときに他のスレッドがすでにセマフォ内にあると仮定すると、それらは正常に実行されて完了します。それらを早期に終了させたい場合は、キャンセルトークンを含むSemaphoreSlimオブジェクトを使用してください。

于 2012-09-04T07:23:14.267 に答える
0

意味がわからない

セマフォで例外をスローします

でもおそらく

セマフォを解放する前に例外をスローします

この場合、10のグループ内の他のスレッドは、問題なく完了するまで実行されます。その後、他のスレッドが入ってくると、許可がないためにデッドロックする可能性があります。

finallyいずれの場合も、次のスキームに従って、上記を防ぐためにセマフォ、ロックなどをブロックで解放する必要があります。

acquire
try
{
    risky code
}
finally
{
    release
}
于 2012-09-04T07:25:24.390 に答える