作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
上述问题..从操作系统的角度来看,线程和进程哪个更容易创建?
最佳答案
创建新线程应该比创建新进程更快。
进程是一个重量级的系统结构。它有自己的虚拟内存空间,拥有所有句柄(互斥量、信号量、打开的文件),并且可以防止其他进程。跨进程通信必须通过操作系统。
线程是进程的“ child ”。线程只是一个执行上下文(寄存器、堆栈和线程局部状态),它可以在另一个硬件内核上运行,或者与进程中的其他线程一起在同一内核上共同调度。多个线程共享单个进程的资源,包括进程拥有的地址空间和操作系统句柄。
有些结构比动态创建线程更快,可以在程序运行时实现多任务处理。
一些系统或代码库支持有线程池(轻量级线程)。在这种情况下,您告诉系统您要运行多少个线程,它会预先创建它们。然后,您可以从该池中分配和释放线程,而不是创建和销毁线程(这仍然是一个相对较慢的过程)。
Job Tasking 是另一种类似的轻量级多核结构,其中您有多个线程和一个任务队列来执行。它们运行作业队列中的任务,然后在队列为空时休眠。
对于线程池和作业任务,除了全局池和队列的创建和销毁之外,不需要线程启动/关闭成本。
关于process - OS 更容易设置,新进程还是新线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6229566/
嘿。本周的一个教程,其中一个问题要求通过使用其他函数 formatLine 和 formatList 创建一个函数 formatLines,以格式化行列表。 我的代码是这样的; type Line =
我是一名优秀的程序员,十分优秀!