在C#中,异步TCP服务器回调中工作项排队的可伸缩方法有哪些?

在C#中,异步TCP服务器回调中工作项排队的可伸缩方法有哪些?,c#,asynchronous,callback,queue,C#,Asynchronous,Callback,Queue,根据这篇文章: jerrylvl说: ----------* 加工 当您从Begin调用中获得回调时,认识到回调中的代码将在低级IOCP线程上执行是非常重要的。在这个回调中避免冗长的操作是绝对必要的。使用这些线程进行复杂的处理将破坏您的可伸缩性,就像使用“每个连接的线程”一样有效 建议的解决方案是仅使用回调将工作项排队以处理传入的数据,这些数据将在其他线程上执行。避免回调内部的任何潜在阻塞操作,以便IOCP线程可以尽快返回其池。在.NET4.0中,我建议最简单的解决方案是生成一个任务,给它一个

根据这篇文章:

jerrylvl说:

----------*

加工

当您从Begin调用中获得回调时,认识到回调中的代码将在低级IOCP线程上执行是非常重要的。在这个回调中避免冗长的操作是绝对必要的。使用这些线程进行复杂的处理将破坏您的可伸缩性,就像使用“每个连接的线程”一样有效

建议的解决方案是仅使用回调将工作项排队以处理传入的数据,这些数据将在其他线程上执行。避免回调内部的任何潜在阻塞操作,以便IOCP线程可以尽快返回其池。在.NET4.0中,我建议最简单的解决方案是生成一个任务,给它一个对客户端套接字的引用和BeginReceive调用已经读取的第一个字节的副本。然后,此任务负责从套接字中读取表示您正在处理的请求的所有数据,并执行它,然后进行新的BeginReceive调用以再次将套接字排队等待IOCP。在.NET4.0之前,您可以使用线程池,或者创建自己的线程工作队列实现

----------*

我的问题是,在.NET4.0中,我到底要怎么做?有人能给我提供一个在可伸缩环境下运行良好的代码示例吗


谢谢

我的问题在这里得到了更深入的回答:


这将详细介绍如何使用TPL、线程池和标准线程来执行工作项,以及何时使用每个方法。

他指的是任务并行库i.NET 4()。您可以通过启动新任务-
task.Factory.StartNew(()=>{//do work here})将工作项排队理解。当使用这种方法时,实际上并不是每次调用回调时都启动一个单独的线程,对吗?