关于linux下一个进程最多可以同时创建多少个线程

时间:2022-10-14 23:48:49
关于linux下一个进程最多可以同时创建多少个线程
关于linux下一个进程最多可以同时创建多少个线程

我在ubuntu下写了这么一个测试程序,发现运行后可以创建6000多个线程,
想知道一个进程最多能创建的线程数是由什么决定的。

请看我的图片上面显示了默认线程栈的大小为8M,而我的linux是64位的,内存为3M,硬盘为48GB,
按每个线程占用8M的空间来算,6000多个线程需要6000*8M的空间。怎么理解

11 个解决方案

#1


栈是8M只是表示 有8M可用地址而已。真正用多少内存则会根据使用量动态变化。

#2


用ulimit命令设置?

#3


引用 2 楼 zhao4zhong1 的回复:
用ulimit命令设置?

用ulimit -a查看的栈大小为8M,我这边实际已经创建了6329个线程了。

#4


引用 1 楼 akirya 的回复:
栈是8M只是表示 有8M可用地址而已。真正用多少内存则会根据使用量动态变化。


引用 1 楼 akirya 的回复:
栈是8M只是表示 有8M可用地址而已。真正用多少内存则会根据使用量动态变化。

有道理,准备试试 在线程里面用一点局部变量占用栈空间,看下创建线程的数量有没有变化

#5


ld链接器是不是用命令行参数可以指定栈大小?

#6


跟文件句柄数有关,默认是1024, 可以通过ulimit 更改默认设置

#7


引用 5 楼 zhao4zhong1 的回复:
ld链接器是不是用命令行参数可以指定栈大小?

我的疑问是怎么会创建得了6000多个线程,资源从哪里来,而不是怎么如何创建这么多线程。

#8


引用 6 楼 shenyi0106 的回复:
跟文件句柄数有关,默认是1024, 可以通过ulimit 更改默认设置

线程跟文件句柄有关么

#9


引用 8 楼 lxh8810 的回复:
Quote: 引用 6 楼 shenyi0106 的回复:

跟文件句柄数有关,默认是1024, 可以通过ulimit 更改默认设置

线程跟文件句柄有关么


线程也是内核对象,只要是内核对象都有内核句柄,有内核句柄,就会受到文件句柄数限制。
看看《操作系统原理》

#10


提醒:Linux是开源的。

#11


你开了6000多个线程,每个线程最多能使用8兆栈空间,而不是说你开了6000个就使用了6000*8兆内存

#1


栈是8M只是表示 有8M可用地址而已。真正用多少内存则会根据使用量动态变化。

#2


用ulimit命令设置?

#3


引用 2 楼 zhao4zhong1 的回复:
用ulimit命令设置?

用ulimit -a查看的栈大小为8M,我这边实际已经创建了6329个线程了。

#4


引用 1 楼 akirya 的回复:
栈是8M只是表示 有8M可用地址而已。真正用多少内存则会根据使用量动态变化。


引用 1 楼 akirya 的回复:
栈是8M只是表示 有8M可用地址而已。真正用多少内存则会根据使用量动态变化。

有道理,准备试试 在线程里面用一点局部变量占用栈空间,看下创建线程的数量有没有变化

#5


ld链接器是不是用命令行参数可以指定栈大小?

#6


跟文件句柄数有关,默认是1024, 可以通过ulimit 更改默认设置

#7


引用 5 楼 zhao4zhong1 的回复:
ld链接器是不是用命令行参数可以指定栈大小?

我的疑问是怎么会创建得了6000多个线程,资源从哪里来,而不是怎么如何创建这么多线程。

#8


引用 6 楼 shenyi0106 的回复:
跟文件句柄数有关,默认是1024, 可以通过ulimit 更改默认设置

线程跟文件句柄有关么

#9


引用 8 楼 lxh8810 的回复:
Quote: 引用 6 楼 shenyi0106 的回复:

跟文件句柄数有关,默认是1024, 可以通过ulimit 更改默认设置

线程跟文件句柄有关么


线程也是内核对象,只要是内核对象都有内核句柄,有内核句柄,就会受到文件句柄数限制。
看看《操作系统原理》

#10


提醒:Linux是开源的。

#11


你开了6000多个线程,每个线程最多能使用8兆栈空间,而不是说你开了6000个就使用了6000*8兆内存