2

仅仅是因为它们只需要一个堆栈和寄存器存储空间,所以它们的创建成本很低吗?

线程可以共享公共数据的事实,即它们不需要使用进程间通信是这里的一个因素吗?这会减少对保护的需求吗?

还是线程比进程更好地利用多处理器?

4

4 回答 4

4

谁说是?在某些操作系统上几乎没有区别。您是否在考虑线程比进程轻得多的 Windows?

我怀疑您会通过咨询这个Stack Overflow 问题来了解更多信息。

于 2011-02-14T11:57:54.527 回答
2

如果我们谈到重量级线程(例如 Windows 线程),一个进程有线程,并且它至少有一个线程(主线程),所以显然它更重或至少不轻:-)(总和是总是 >= 部分)

进程必须具有许多“表”(打开的文件表,显示内存映射方式的表(LDT,本地描述符表)......)。如果您创建一个进程,所有这些表都必须被初始化。如果您创建一个线程,它们不会(因为该线程使用其进程的线程)。然后一个新进程必须再次加载所有 DLL,检查它们是否重新映射......

于 2011-02-14T14:30:18.950 回答
1

从 Windows 的角度来看,如果一个进程正在加载许多 DLL,并且由于基地址冲突而在内存中移动它们,则该进程可能需要更长的时间来创建。然后查看 David Heffernan 的答案链接中列出的所有其他原因。

于 2011-02-14T12:10:20.727 回答
0

进程切换需要更改 CS/DS 寄存器。这些寄存器值的变化需要从全局描述符表中获取一个新的描述符,这实际上是一个消耗 CPU 时间的过程。

于 2015-10-12T17:33:41.247 回答