.net 我应该使用线程池还是任务并行库
使用.Net控制台应用程序处理用户请求,并将每个处理请求的结果发送回用户(使用TCP套接字) 出于测试目的,我创建了少量线程来在多个线程上执行此任务,但现在转到生产环境,我需要能够并行处理尽可能多的请求 我对使用线程池还是TPL感到困惑。(每个请求的平均处理时间为3秒)有什么建议吗 这是我目前的代码:.net 我应该使用线程池还是任务并行库,.net,multithreading,task-parallel-library,.net,Multithreading,Task Parallel Library,使用.Net控制台应用程序处理用户请求,并将每个处理请求的结果发送回用户(使用TCP套接字) 出于测试目的,我创建了少量线程来在多个线程上执行此任务,但现在转到生产环境,我需要能够并行处理尽可能多的请求 我对使用线程池还是TPL感到困惑。(每个请求的平均处理时间为3秒)有什么建议吗 这是我目前的代码: public void Start() { started = true; Thread looper = new Thread(new ThreadSt
public void Start()
{
started = true;
Thread looper = new Thread(new ThreadStart(BufferRunner));
looper.Start();
Thread looper2 = new Thread(new ThreadStart(BufferRunner));
looper2.Start();
Thread looper3 = new Thread(new ThreadStart(BufferRunner));
looper3.Start();
Thread looper4 = new Thread(new ThreadStart(BufferRunner));
looper4.Start();
}
private void BufferRunner()
{
while (started)
{
BufferedCommand command = null;
lock (buffer)
{
if (buffer.Count > 0)
command = buffer.Dequeue();//buffer.Enqueue happens when user request is received
}
if (command != null)
ExecuteCommand(command);
}
}
您应该使用TPL,因为它将提供更高级别的抽象,并且比
ThreadPool
更喜欢TPL而不是Thread
和ThreadPool
。很难找到使用旧API的理由<代码>任务提供了可组合性、更好的错误处理和等待
每个请求的平均处理时间为3s
这听起来像是
LongRunning
选项可能是合适的。对此进行调查。我实现了一个包含任务的版本,并将运行一些测试。然而,我仍然不确定我是否应该使用“长时间运行”选项,仍然在学习任务。谢谢