gpt4 book ai didi

c - getrlimit()返回错误的值?

转载 作者:行者123 更新时间:2023-12-03 12:52:05 25 4
gpt4 key购买 nike

有人可以向我解释为什么以下程序创建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;
}

输出:

soft limit: 7455
hard limit: 7455
threads 7185



它不应该创建7455线程吗?

最佳答案

最大线程数RLIMIT_NPROC是每个“真实”用户ID而不是每个进程的(IIRC),因此,有意义的是,由于其他已经运行的具有相同“真实”用户ID的进程或某种某种进程,每个进程的线程数量略低防止资源快速耗尽。

关于c - getrlimit()返回错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32204824/

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