如何验证我的async/await是否正在使用I/O完成端口?我目前正在使用async/await将数据库存储过程调用转换为异步调用。类似于此处描述的方法。基于这个答案,我想验证异步调用实际上是在使用I/O完成端口。如果它最终等待来自ThreadPool的另一个线程,那么它实际上违背了强制转换调用的目的。验证是否正在使用I/O完成端口的最佳方法是什么?它不只是阻塞另一个线程吗?还调用WAITFORDELAY'1:00:00'次。如果您使用的线程少于1000个,那么您将获得无线程IO。您应该看到几十个(其中有许多由运行时和框架启动的实用程序线程)。您还可以中断调试器并确保当前没有线程正在等待IO。您可以从堆栈跟踪中看出。这适用于任何现有的应用程序。我会创建一些perfmon计数器并在线程池线程中更新它们。然后,您可以观察正在使用的应用程序,并查看在任何给定时间有多少线程正在使用,这反过来可能会帮助您调整数字。您还可以记录每个线程花费的时间,并计算它,以便您可以看到平均等待时间,这可以帮助您确定它们是否被阻塞,但我认为线程数也会显示这一点-因为如果它们互相等待,请一次看好几个完整的。取决于你从事的工作。几年前我制作了一个网络应用程序,它非常适合对应用程序进行性能调整。C#学习教程就是这些:如何验证我的async/await是否正在使用I/O完成端口?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
