我应该使用ThreadPool还是任务并行库

时间:2015-06-27 16:45:49

标签: .net multithreading task-parallel-library

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

出于测试目的,我创建了少量线程来完成多个线程的工作,但是转向生产,我需要能够并行地提供尽可能多的请求。

我在使用ThreadPool或TPL之间感到困惑。 (每个请求的平均处理时间是3秒)任何建议?

这是我目前的代码:

 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);
        }
    }

2 个答案:

答案 0 :(得分:3)

始终优先于ThreadThreadPool的TPL。很难找到使用旧API的理由。 Task提供可组合性,更好的错误处理和await

  

每个请求的平均处理时间为3秒

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

答案 1 :(得分:0)

您应该使用TPL,因为它将提供更高级别的抽象并且优于ThreadPool

相关问题