首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果在信号量的情况下多线程抛出异常,该怎么办?

如果在信号量的情况下多线程抛出异常,该怎么办?
EN

Stack Overflow用户
提问于 2012-09-04 05:32:31
回答 2查看 276关注 0票数 3

如果一个信号量中有多个线程抛出异常,会发生什么?

假设一个sempahore可以有10个线程,这些线程可以一次进入,thread# 2,5,6,7,9将抛出异常,那么其他不会抛出异常的线程将成功运行或被中止。

它与AggregatedException类有什么关系吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-04 07:23:14

假设当异常发生时,其他线程已经在信号量中,它们将成功运行直到完成。如果您希望它们提前终止,请使用带有cancellation tokenSemaphoreSlim对象。

票数 1
EN

Stack Overflow用户

发布于 2012-09-04 07:25:24

我不明白你说的是什么意思

在信号量中引发异常

但很可能

在释放信号量之前抛出异常

在这种情况下,10个线程组中的其他线程将毫无问题地运行到完成。如果其他线程随后进入,它们可能会因为缺少许可而死锁。

在任何情况下,都应该在finally块中释放信号量、锁等,以防止上述情况发生,根据以下方案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
acquire
try
{
    risky code
}
finally
{
    release
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12257331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文