加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server与.NET异步处理中的异步处理

发布时间:2021-03-07 08:29:37 所属栏目:MsSql教程 来源:网络整理
导读:在SQL Server中使用异步处理而不是.NET异步处理有什么优势?他们不一样吗?我很难理解在SQL Server中使用异步处理而不是.NET APM的好处是什么.我可以轻松地在lambda表达式中包装SQL调用并执行BeginInvoke(…). 有人可以帮助我两者的区别和好处吗? 解决方

在SQL Server中使用异步处理而不是.NET异步处理有什么优势?他们不一样吗?我很难理解在SQL Server中使用异步处理而不是.NET APM的好处是什么.我可以轻松地在lambda表达式中包装SQL调用并执行BeginInvoke(…).

有人可以帮助我两者的区别和好处吗?

解决方法

.NET异步处理(BeginInvoke(…))的问题在于,所有这一切都是通过分离线程来同步处理代码. 5分钟的查询将占用一个线程5分钟,阻塞(即在99%的时间内什么都不做),而在远端计算结果.在压力下(一次多次查询),这将耗尽线程池,将所有线程捆绑在阻塞状态.线程池将变得无响应,并且新的工作请求将遭受等待线程池启动额外线程的大延迟.这不是线程池的预期用途,因为它的设计期望它要求完成的任务是短暂的和非阻塞的.

使用Begin / EndAction APM对,可以以非阻塞方式调用相同的操作,并且只有当结果通过IO完成端口返回时才将其排队为线程池中的工作项.在过渡期间,你的所有线程都没有被捆绑,并且在处理排队响应时,数据可用意味着用户代码不会阻塞IO,并且可以快速完成…更有效地使用线程池可以扩展到更多的客户端请求,而不需要每个未完成操作的线程成本.

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读