微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

解决方法

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

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

原文地址:https://www.jb51.cc/mssql/84084.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐