2

我有一个 epoll 服务器,它有时会使用它们的主机名表示打开传出连接。由于传入连接流的高速率,我不想阻止像getaddrinfo()or之类的地方gethostbyname()。当然,我可以实现一个缓存和一个新线程,在其中执行主机名解析。是否有单线程非阻塞方式将主机名解析为 IP?

4

1 回答 1

1

为此目的有各种库,例如libevent包含解析器。

不过,我有点同意@Puciek 的观点,在单个线程中执行此操作会增加相当多的复杂性,从而带来可疑的好处。使用专用解析线程并通过管道与其通信可能是最好的解决方案。

既然你提到epoll我猜你正在使用Linux。它有一个getaddrinfo_a功能,如果我理解正确的话,它会为您完成部分功能。它克隆一个线程并在那里运行 getaddrinfo。我从来没有使用过它,但除此之外我无能为力。

于 2014-07-09T08:50:21.050 回答