gpt4 book ai didi

c - pthread_create 使用 ENOMEM 失败?

转载 作者:行者123 更新时间:2023-11-30 16:04:00 25 4
gpt4 key购买 nike

我发现 pthread_create() 在具有 4GB 实际内存的 64 位 RHEL 计算机上失败,并出现 rc=12 (ENOMEM)。当线程创建失败时,“top”命令显示进程正在使用 1G 虚拟内存。

我能够创建 16 个可连接线程,但第 17 个及后续调用因 ENOMEM 错误而失败(这显然意味着内存或其他某些资源不可用)。对出了什么问题有什么想法吗?

最佳答案

我在 strace 下运行该程序并看到以下内容:

mmap(NULL, 10489856, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|0x40, -1, 0) = -1 ENOMEM (Cannot allocate memory)mmap(NULL, 10489856, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)

更新:不要问我为什么,但以下更改可以解决该问题:

pthread_attr_setscope(pattr, PTHREAD_SCOPE_SYSTEM);

关于c - pthread_create 使用 ENOMEM 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3580571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com