2
有人可以向我解释为什么下面的程序创建7185线程而不是7455?getrlimit()返回错误的值?
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'类型无符号? –