c - 我的应用程序正在运行多少个线程?
问题描述
在我的代码中,我最多启动两个线程:
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_create
并验证这一点。如果你只运行 2 个线程,你应该准确地击中这个断点 2 次。但是根据 gdb 输出,创建了 2 个以上的线程,因此您应该击中断点超过 2 次。
推荐阅读
- java - 如何从列表中删除所有重复项
- azure - 带有“冲突”错误的 PostgreSql 错误的 Azure 专用终结点
- javascript - 如何检查数组是否包含JavaScript中的项目
- swift - 带引号和不带引号的字符串数组之间的区别?
- java - 如何使用 memoization 来提高该算法的运行时间?
- postgresql - 从特定命名空间中删除所有 K8s Pod
- html - Amstelvar 的 @font-face 声明(斜体可变字体)
- amazon-web-services - CloudFront 403 禁止异常(AWS SAM 模板)
- sql - MS Access SQL 代码 - 查询问题(不在)
- android - 如果抽象类在 Kotlin 中有超过 1 个方法,我可以使用 lambda 吗?