java 线程耗尽_使用Task.Run以致线程池耗尽时会发生什么?

我有一个.NET Windows服务,它使用BeginRead / EndRead异步I / O范例实现套接字服务器 . 现在这个套接字代码需要调用一些async / Task / await异步代码 .

我一直在使用Nito.AsyncEx库's AsyncContext class' Run方法,但我对是否从EndRead调用它会阻止,将工作线程保持为人质有所保留 . 我得到my earlier question的建议是使用Task.Run而不是Nito.AsyncEx 's AsyncContext.Run. This submits the call into the async / await code and returns immediately. It occurred to me that under load that there' s没有对客户端进行回击以防止请求泛滥线程池 .

我会重新问我关于Nito.AsyncEx的AsyncContext.Run原题:是否持有线程,它被称为上(池线程调用我的套接字的EndRead回调)为人质,或者它腾出线程,而异步I / O它的调用是在后台发生的?

如果Nito.AsyncEx的AsyncContext.Run真正阻止,那么Task.Run似乎是我唯一的选择 . 关于如何回击客户端请求以防止线程池耗尽的任何建议?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值