这只是因为他们只需要一个堆栈和寄存器来存储寄存器,因此创建起来便宜吗?
线程是否可以共享公共数据,即它们不需要在这里使用进程间通信这一因素?这是否会减少对保护的需求?
或者线程是否比流程更好地利用多处理器?
答案 0 :(得分:4)
谁说的是?在某些操作系统上,差别不大。您是否在考虑Windows的哪些线程比进程重量轻得多?
我怀疑你会通过咨询Stack Overflow question来了解更多信息。
答案 1 :(得分:1)
从Windows的角度来看,如果进程加载了很多DLL,并且由于基地址冲突而在内存中移动它们,则 可能需要更长时间才能创建。然后查看David Heffernan回答链接中列出的所有其他原因。
答案 2 :(得分:1)
如果我们谈到重量级线程(例如Windows线程),一个进程有线程,它至少有一个线程(主线程),所以显然它更重或至少不轻:-)(总和总是> = =部分)
进程必须具有许多“表”(打开文件表,显示内存映射方式的表(LDT,本地描述符表)......)。如果创建进程,则必须初始化所有这些表。如果你创建一个线程,他们不会(因为线程使用其进程)。然后一个新进程必须再次加载所有DLL,检查它们是否重新映射...
答案 3 :(得分:0)
过程切换需要更改CS / DS寄存器。改变这些寄存器的值需要从全局描述符表中获取新的描述符,这在CPU时间方面实际上是昂贵的过程。