0

我实现了 HttpListener 来处理请求。

现在我不确定使用 Async 实现是否比我的更好。

我的做法与此类似:

while (this.httpListener.IsListening)
{
    processRequest(this.httpListener.GetContext());
}

void processRequest(HttpListenerContext context)
{
    ...
    ThreadPool.QueueUserWorkItem(....
    ...
}

所以简而言之,我首先在一个线程中处理所有请求,然后使用 ThreadPool 将它们拆分。

与 Async-Implementation 相比是否有任何缺点,或者甚至更糟糕?

4

1 回答 1

1

要意识到的一件重要事情是 usingasync不会创建新线程。当然,您调用的函数可能会这样做,但async单独不会这样做。

对于 IO,Async 方法的许多 Microsoft 实现有时会使用 IO 完成端口。这意味着它们会从操作系统管理的单个专用线程中回调,而不必创建一个新线程来等待一些 IO。

这是一种更好的方法,特别是对于可能有大量传入请求的服务器。每个线程都有巨大的开销。

因此,我建议您async尽可能使用该实现。

于 2013-04-15T08:22:54.433 回答