Tag: threadpool

ASP.Net中线程敏捷性的含义是什么?

我正在阅读一篇关于HttpContext和CallContext的文章,看看线程敏捷性。 这是什么意思?

TaskCreationOptions.LongRunning选项和ThreadPool

TPL使用任务计划程序来协调任务。 根据官方文档 ,默认任务调度程序使用线程池,但如果出现TaskCreationOptions.LongRunning选项,则它将为该任务创建专用线程(A)。 问题:截至目前,Visual Studio 2010的MSDN文档尚未就绪,当前的在线MSDN尚未最终确定; 有谁知道(A)是真还是假?

什么是ThreadPool服务器的async / await等价物?

我正在使用同步apis和线程池的tcp服务器看起来像这样: TcpListener listener; void Serve(){ while(true){ var client = listener.AcceptTcpClient(); ThreadPool.QueueUserWorkItem(this.HandleConnection, client); //Or alternatively new Thread(HandleConnection).Start(client) } } 假设我的目标是在资源使用率最低的情况下处理尽可能多的并发连接,这似乎很快就会受到可用线程数量的限制。 我怀疑通过使用非阻塞任务apis,我将能够用更少的资源处理更多。 我最初的印象是这样的: async Task Serve(){ while(true){ var client = await listener.AcceptTcpClientAsync(); HandleConnectionAsync(client); //fire and forget? } } 但令我印象深刻的是,这可能会导致瓶颈。 也许HandleConnectionAsync需要花费非常长的时间才能达到第一个await,并且会阻止主接受循环继续进行。 这只会使用一个线程,还是运行时会在多个线程上神奇地运行它看起来合适的东西? 有没有办法将这两种方法结合起来,这样我的服务器就可以使用它所需的线程数来满足正在运行的任务的数量,但是它不会在IO操作上不必要地阻塞线程? 在这种情况下,是否存在最大化吞吐量的惯用方法?