我应该使用线程池还是任务并行库

Should I use ThreadPool or Task Parallel Library

正在处理处理用户请求的 .Net 控制台应用程序并将每个处理请求的结果发送回用户(使用 TCP 套接字)

出于测试目的,我创建了少量线程来在多线程上完成这项工作,但是在生产环境中,我需要能够并行处理尽可能多的请求。

我对使用 ThreadPool 还是 TPL 感到困惑。 (每个请求的平均处理时间为3s)有什么建议吗?

这是我当前的代码:

 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.

更好

总是比 ThreadThreadPool 更喜欢 TPL。很难找到使用旧 API 的理由。 Task 提供可组合性、更好的错误处理和 await.

The average processing time per request is 3s

听起来 LongRunning 选项可能是合适的。调查一下。