所以我正在阅读website,上面写着
这种并发性引入了许多众所周知的困难。 首先,线程是众所周知的重量级;默认情况下是一个线程 它的堆栈和许多虚拟内存消耗了一百万字节的虚拟内存 其他系统资源。
我想知道那个数字来自哪里。 Windows操作系统中是否有一些常量可以为线程提供1,000,000字节的内存?这个号码是怎么来的?是否确定大约是流程所需的平均字节数?
答案 0 :(得分:3)
CreateThread关于dwStackSize
参数的文档说明
dwStackSize [in]
堆栈的初始大小,以字节为单位。系统将此值舍入到最近的页面。如果此参数为零,则新线程使用可执行文件的默认大小。有关详细信息,请参阅Thread Stack Size。
点击链接后显示
链接器使用的默认堆栈保留大小为1 MB。
因此,如果在调用CreateThread时创建一个未指定堆栈大小的线程,则默认分配为1 MB(1,048,576字节),大约为一百万字节。为什么选择这个号码作为默认值并不是我们在这里可以回答的任何问题,因为二十多年前(当Windows 95和NT 4.0正在开发时)那个坐在小组中的MS员工极不可能做出这个决定)将阅读这篇文章。
答案 1 :(得分:0)
默认情况下,Windows默认分配1MB的虚拟内存。 This link 深入解释