我目前正在开发一个高性能的Raw套接字应用程序。
我正在使用ReceiveFromAsync来接收数据包。这可能听起来像一个愚蠢的问题,但这是隐式线程吗?我不确定我是否需要接收收到的数据包并解决处理问题,以确保在处理当前数据包时不会阻止任何其他数据包。文档没有真正提到这一点。 3.5套接字的示例代码没有线程,因此我最初的猜测是隐式处理它。
由于
答案 0 :(得分:3)
所有Async IO
函数都创建/使用IO完成端口,这是一个进程提交的请求队列。每当进程发出Asynch IO call
时,此请求就会在此队列中提交。然后,一个特殊的线程池处理这些IO请求,这些请求是kernel threads
。因此,如果您将此系统管道(these kernel threads
)视为多线程的一部分,那么您的代码是多线程的。
如果您考虑通过Async IO
调用提供给您的抽象作为起点,那么您的代码可能不是多线程的。
在任何一种情况下,即使它们不是您应用程序中的专用线程,也会运行多个线程,或者它们是在应用程序启动之前创建的,并且它们将在您的应用程序存在后继续运行。