【发布时间】:2015-11-19 04:56:50
【问题描述】:
有人可以向我解释一下为什么下面的程序会创建 7185 个线程而不是 7455 个线程吗?
void *thr_crt(void *arg)
{
sleep(64);
return 0;
}
int main(void)
{
struct rlimit lim;
int err;
int i;
pthread_t tid;
if(getrlimit(RLIMIT_NPROC, &lim) < 0)
perror("getrlimit error"), exit(1);
i = 1;
while(pthread_create(&tid, NULL, thr_crt, NULL) == 0)
i++;
printf("soft limit: %d\n", lim.rlim_cur);
printf("hard limit: %d\n", lim.rlim_max);
printf("threads %d\n", i-1);
return 0;
}
输出:
软限制:7455
硬限制:7455
线程7185
它不应该创建7455个线程吗?
【问题讨论】:
-
请注意:
rlim_t类型不是无符号的吗?
标签: c multithreading unix system-calls