ASP.NET IHttpAsyncHandler的一点想法

来源:互联网 发布:cura切片生成软件 编辑:程序博客网 时间:2024/06/04 19:17

近期使用Asp.net做基于Http的服务端,用到了IHttpAsyncHandler,去网上搜集了信息之后,发现一个问题,本来不想写,还是忍不住在这里写出来了,可能是怕这类文章贻误看客吧。

IHttpAsyncHandler用于异步处理,这点没有疑问,不过奇怪的是,无论是使用BeginInvoke(A)还是QueueUserWorkItem(B)都是使用ThreadPool中的线程来承载任务,而Asp.net也是使用了ThreadPool中的线程来承载HttpRequest,那么使用A还是B有什么意义,除了没有发挥异步本身的作用,徒然增加了线程调度时间。

我接受的方式是使用自定义的线程池来承载异步任务(切不可重新创建Thread,那是相当危险的,测试数据上可能会漂亮多了,但导致资源的不可控)。

PS:多线程模型一定要考虑CPU核心数,切不可盲目new Thread,徒然在调度、Cache命中上增加时间损耗。

0 0
原创粉丝点击