如果多个线程在信号量中抛出异常会发生什么。
假设一个 sempahore 可以有 10 个线程,它们可以一次进入,线程# 2,5,6,7,9 将抛出异常,那么其他不会抛出异常的线程将成功运行或中止。
它是否与 AggregatedException 类有关。
如果多个线程在信号量中抛出异常会发生什么。
假设一个 sempahore 可以有 10 个线程,它们可以一次进入,线程# 2,5,6,7,9 将抛出异常,那么其他不会抛出异常的线程将成功运行或中止。
它是否与 AggregatedException 类有关。
假设异常发生时其他线程已经在信号量内,它们将成功运行到完成。如果您希望它们提前终止,请使用带有取消标记的SemaphoreSlim对象。
我不明白你的意思
在信号量中引发异常
但可能
在释放信号量之前抛出异常
在这种情况下,10 个组中的其他线程将毫无问题地运行完成。如果之后有其他线程进入,它们可能会由于缺少许可而死锁。
在任何情况下,信号量、锁等都应该在一个finally
块中释放以防止上述情况,根据以下方案:
acquire
try
{
risky code
}
finally
{
release
}