我有一个epoll服务器,它有时会使用它们的主机名表示打开传出连接。由于传入连接流的速度很快,我不想阻止像getaddrinfo()
或gethostbyname()
这样的地方。当然,我可以实现缓存加上一个新线程,其中将执行主机名解析。是否有单线程非阻塞方式将主机名解析为IP?
答案 0 :(得分:1)
为此目的有各种库,例如libevent
包含一个解析器。
我有点同意@Puciek,但是在单个线程中这样做会增加相当多的复杂性以获得可疑的好处。使用专用的解析线程并通过管道与它通信可能是最好的解决方案。
因为你提到epoll
我猜你正在使用Linux。它有一个getaddrinfo_a
函数,如果我理解正确,可以为你做一部分。它克隆一个线程并在那里运行getaddrinfo。我从来没有使用它,但除此之外无法帮助。