首页 > 解决方案 > 我的应用程序正在运行多少个线程?

问题描述

在我的代码中,我最多启动两个线程:

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)]

这让我觉得有两个以上的线程正在运行。这是怎么回事?如何检查我的程序正在运行多少线程?

标签: cmultithreadinggdb

解决方案


这让我觉得有两个以上的线程正在运行。这是怎么回事?

您可以设置断点pthread_create并验证这一点。如果你只运行 2 个线程,你应该准确地击中这个断点 2 次。但是根据 gdb 输出,创建了 2 个以上的线程,因此您应该击中断点超过 2 次。


推荐阅读