繁体   English   中英

长时间运行的异步操作,无IO线程

[英]Long-Running Asynchronous Operations, Without IO threads

启动高延迟异步IO操作(平均100ms-500ms)的最佳方法是什么,而IO操作没有固有的APM或IO线程/完成端口支持?

我不想让线程池/工作线程在突发活动期间都被这样的操作阻塞。

我的具体示例案例是ODP.NET 它不(还?)不支持APM。 我看到了如何处理该问题的答案 ,但我很好奇这是否真的是解决此类问题的正确方法? 我想这部分取决于对另一个问题的答案

如果IO操作没有固有的异步支持,并且仅为其操作提供了阻塞方法,那么您别无选择,只能创建一个新线程或仅等待该线程的线程池线程。

解决此问题的唯一方法是使底层IO操作具有异步支持。

如果绝对不可能用异步IO进行重写,那么最好的选择是

(a)ThreadPool,但是如果您尝试一次性租用太多线程,则在创建其他线程时它将变得缓慢。 反过来,这将影响其他使用ThreadPool ...计时器的东西的运行,类似的事情...令人讨厌。

(b)使用您自己的独立的类似线程池的解决方案,该解决方案不受此固有限制。

ThreadPool并不是真正用于阻止操作。 如果您的顾虑是现实的,我愿意(b)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM