【发布时间】:2015-01-06 13:43:24
【问题描述】:
我想通过在 Linux 中调用 getnameinfo() 来解析主机名。为了加快进程,我使用线程池来解析主机名。
但问题是,一开始速度很快,然后逐渐降低。过了一会,一个线程的速度就接近了。有时这个函数需要 3 秒,所有线程看起来都按顺序运行。
我对此感到困惑。 getnameinfo() 函数中是否有任何锁定机制?
【问题讨论】:
-
线程是怎么调用的,用什么方式,用什么参数?你的 DNS 服务器是什么?
-
您是如何确定花费在系统调用上的时间而不是您自己的代码的?
-
参数只是线程数组的索引。每个线程都有一个while循环。在 while 块中,程序随机生成 IP 地址并调用 getnameinfo() 来解析 IP。我只是计算所有线程中的循环并每 10 秒打印一次速度。此外,我的 DNS 服务器是由本地网络提供商提供的。
标签: c++ multithreading resolve