gpt4 book ai didi

c - Pthreads - 高内存使用率

转载 作者:IT王子 更新时间:2023-10-29 00:21:22 26 4
gpt4 key购买 nike

我正在用 C 编写程序,在 256Mb 系统上的 Linux 中创建大量 Pthread。我通常有 +200Mb 的免费空间。

当我用少量线程运行程序时,它可以正常工作,但是一旦我让它创建大约 100 个线程,它就会出错,因为系统内存不足。我做了几次测试,每个线程使用将近 2Mb。线程的堆栈大小设置为 16Kb。

我用来创建每个线程的代码:

pthread_attr_t attr;
pthread_attr_init(&attr);
size_t stacksize;
stacksize = (double) 16*1024;
int res = pthread_attr_setstacksize (&attr, stacksize);
int res2 = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
if (res != 0 || res2 != 0) {
logs << "pthread_attr_XX: error "+int2string(res);
exit(-1);
}
pthread_t id;
pthread_create(&id, &attr, &Class::thread_callback, &some_var);

这是正常现象还是我遗漏了什么?谢谢。

最佳答案

不确定它是否有帮助,但在创建第一个线程之前尝试使用 RLIMIT_STACK 调用 setrlimit 以将堆栈大小限制为 16k。

关于c - Pthreads - 高内存使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7235934/

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