|
本帖最后由 fulibo 于 2024-11-19 12:01 编辑
网上查了一下,一个线程大概占用1M左右的内存!
似乎,linux中虚拟内存确实是按照一个线程默认8M来分配的。
但,windows中不是这样的,开启线程后,内存增加很小。
默认情况下,一个线程的栈要预留1M的内存空间,而一个进程中可用的内存空间只有2G,
所以理论上一个进程中最多可以开2048个线程,但是内存当然不可能完全拿来作线程的栈,
所以实际数目要比这个值要小,你也可以通过构造线程时修改默认堆栈大小,将其改的比较小,
这样就可以多开一些线程,如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程,
而一个线程的默认线程栈1024K
AdditionalCriticalWorkerThreads:用于设置额外的关键工作线程。
AdditionalDelayedWorkerThreads:用于设置延迟工作线程。
这两个参数的设置应该尽量避免超过系统的实际线程数,以保持系统稳定性。在这种情况下,Intel Core i5-10400 有 12 个线程(6 核心,支持超线程)。通常来说,可以设置的最大值不会超过实际线程数的 2 到 3 倍,但要避免过多线程导致性能瓶颈或资源耗尽。
物理核心 × 2 =
Windows Registry Editor Version 5.00
;可用的工作线程,并优化CPU能力
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Executive]
"AdditionalCriticalWorkerThreads"=dword:00000018 ;额外分配给处理关键任务的线程数量,关键任务通常指的是那些需要尽快完成,以保证系统稳定性和响应性的任务
"AdditionalDelayedWorkerThreads"=dword:00000018 ;额外分配给处理延迟任务(即那些可以稍后处理的任务)的线程数量
|
|