【发布时间】:2016-01-28 18:56:15
【问题描述】:
假设我有几个要监控的套接字。如果我在每个文件描述符上创建 POSIX 文件描述符并为每个文件描述符结构分配一个事件处理程序,我是否需要为每个套接字创建和分配线程?
我的理解是,每当定义的文件描述符上发生事件时,都会调用其事件处理函数。所以不需要线程。我对吗?
【问题讨论】:
-
我的理解是线程从来不是必需的。有时它们可以提高性能(并行计算),有时它们使生活变得更轻松,但更难(除非使用得当)。线程绝对不是必需来处理多个套接字,但根据应用程序可能是一个不错的设计选择。并请详细说明“事件处理程序”。如果没有上下文,这是一个过于宽泛的术语。事实上,事件处理程序只是一个回调子程序。
-
“为每个文件描述符结构分配一个事件处理程序”是什么意思?在 POSIX 中没有分配事件处理程序的方法。每个套接字创建一个线程只是同时监视多个套接字的方法之一。通常,这是最简单的调试方法,但它不适用于大量套接字。其他选项包括: 1)使用非阻塞套接字的单线程,循环检查所有套接字; 2) 使用带有非阻塞套接字和
select/poll/epoll系统调用的单线程。 -
谢谢。我为每个文件描述符创建了一个结构,该结构存储了指向处理函数的指针。当然不是标准的,在 POSIX 中。