我正在用 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);
这是正常的还是我错过了什么?谢谢。