C 我的应用程序运行了多少线程?
在我的代码中,我最多启动两个线程:C 我的应用程序运行了多少线程?,c,multithreading,gdb,C,Multithreading,Gdb,在我的代码中,我最多启动两个线程: int main() { ... if (!justcrawler) pthread_create(&dns_thread, NULL, &dns_resolver_init, NULL); if (!justdns) pthread_create(&crawler_thread, NULL, &crawler_init, (voi
int main()
{
...
if (!justcrawler)
pthread_create(&dns_thread, NULL, &dns_resolver_init, NULL);
if (!justdns)
pthread_create(&crawler_thread, NULL, &crawler_init, (void *)&config);
...
}
当我在gdb中运行该程序时,我会得到很多这样的行:
[New Thread 0x7fff56ffd700 (LWP 188780)]
[New Thread 0x7fff567fc700 (LWP 188781)]
[New Thread 0x7fff55ffb700 (LWP 188782)]
[New Thread 0x7fff557fa700 (LWP 188783)]
这让我觉得有两个以上的线程正在运行。发生什么事?如何检查程序正在运行的线程数?您可以使用
信息线程
显示当前存在的所有线程。您可以使用信息线程
显示当前存在的所有线程
这让我觉得有两个以上的线程正在运行。什么
怎么了
您可以在pthread\u create
上设置断点并进行验证。如果您只运行2个线程,那么应该正好命中此断点2次。但根据gdb输出,创建了2个以上的线程,因此应该命中断点2次以上
这让我觉得有两个以上的线程正在运行。什么
怎么了
您可以在
pthread\u create
上设置断点并进行验证。如果您只运行2个线程,那么应该正好命中此断点2次。但是根据gdb输出,创建了2个以上的线程,因此您应该命中断点2次以上。dns\u解析器\u init()的作用是什么?crawler\u init()
做什么?如果您正在调用其他人的web爬虫库,那么您如何知道它不会创建自己的线程?“很多”是多少?不,我没有用别人的图书馆。不,我的函数不创建自己的线程。数字各不相同。我一次看到多达30条这样的信息。但他们总是回来。我用关闭打印线程事件关闭了它们,它们很烦人。但是我仍然不明白发生了什么。dns\u resolver\u init()
做什么?crawler\u init()
做什么?如果您正在调用其他人的web爬虫库,那么您如何知道它不会创建自己的线程?“很多”是多少?不,我没有用别人的图书馆。不,我的函数不创建自己的线程。数字各不相同。我一次看到多达30条这样的信息。但他们总是回来。我用关闭打印线程事件关闭了它们,它们很烦人。但我还是不明白发生了什么。谢谢。我试过了。它显示了预期的线程数。到现在为止,一直都还不错。但我仍然想知道所有新的线程消息意味着什么。谢谢。我试过了。它显示了预期的线程数。到现在为止,一直都还不错。但我仍然想知道所有新的线程消息意味着什么。