处理用于处理用户请求的.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);
}
}
答案 0 :(得分:3)
始终优先于Thread
和ThreadPool
的TPL。很难找到使用旧API的理由。 Task
提供可组合性,更好的错误处理和await
。
每个请求的平均处理时间为3秒
听起来LongRunning
选项可能是合适的。调查一下。
答案 1 :(得分:0)
您应该使用TPL,因为它将提供更高级别的抽象并且优于ThreadPool
。