256Mb システム上の Linux で多くの Pthreads を作成する C で何かをプログラミングしています。私は通常+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);
それは正常ですか、それとも何か不足していますか?ありがとう。