进程是活动程序,即正在执行的程序。它不仅包含程序代码,还包括程序计数器,进程堆栈,寄存器,程序代码等。与此相比,程序代码只是文本部分。
线程是可以由调度程序独立管理的轻量级进程。它使用并行性提高了应用程序性能。线程与它的对等线程共享信息,如数据段,代码段,文件等,而该线程包含其自己的寄存器,堆栈,计数器等。
进程和线程之间的主要区别如下:
比较基础 | 处理 | 线 |
---|---|---|
定义 | 进程是正在执行的程序,即活动程序。 | 线程是可以由调度程序独立管理的轻量级进程。 |
上下文切换时间 | 由于过程比较繁重,因此需要更多时间进行上下文切换。 | 线程比上下文轻,因此需要较少的时间进行上下文切换。 |
内存共享 | 进程完全独立,不共享内存。 | 线程可能与其对等线程共享一些内存。 |
通讯 | 进程之间的通信比线程之间需要更多的时间。 | 线程之间的通信所需的时间少于进程之间的通信。 |
受阻 | 如果某个进程被阻塞,则其余进程可以继续执行。 | 如果用户级别的线程被阻止,则其所有对等线程也将被阻止。 |
资源消耗 | 进程比线程需要更多的资源。 | 线程通常比进程需要更少的资源。 |
相依性 | 各个过程相互独立。 | 线程是进程的一部分,因此是依赖的。 |
数据和代码共享 | 流程具有独立的数据和代码段。 | 线程与其对等线程共享数据段,代码段,文件等。 |
OS治疗 | 操作系统将分别处理所有不同的进程。 | 操作系统将所有用户级对等线程视为单个任务。 |
创作时间 | 流程需要更多的时间来创建。 | 线程需要更少的时间来创建。 |
终止时间 | 流程需要更多时间才能终止。 | 线程需要更少的时间来终止。 |
问题内容: 在阅读了这个答案和Robert Love的“LinuxKernelDevelopment”之后,随后在系统调用中,我发现Linux中的进程和线程(几乎)与内核没有区别。它们之间有一些调整(在引用的SO问题中被讨论为“更多共享”或“更少共享”),但是我仍然有一些问题需要解答。 我最近开发了一个包含几个POSIX线程的程序,并决定在此前提下进行试验。在创建两个线程的进程中,所有线程当然都会
问题内容: 进程和线程之间的技术区别是什么? 我感到像“过程”这样的词已被过度使用,并且还有硬件和软件线程。像Erlang这样的语言的轻量级进程怎么样?有确定的理由使用一个术语而不是另一个术语吗? 问题答案: 进程和线程都是独立的执行序列。典型的区别是(同一进程的)线程在共享内存空间中运行,而进程在单独的内存空间中运行。 我不确定您可能指的是“硬件”还是“软件”线程。线程是一种操作环境功能,而不是
本文向大家介绍固定线程池和缓存线程池之间的区别。,包括了固定线程池和缓存线程池之间的区别。的使用技巧和注意事项,需要的朋友参考一下 执行器框架是使用线程池概念设计的。线程池是重用已经创建的线程的方法,而不是每次执行当前任务都创建一个新线程的方法。 Executors类提供了一种工厂方法来创建线程池。ThreadPoolExecutor类是从许多Executors工厂方法返回的执行器的基本实现。 序
问题内容: 线程状态WAIT和线程状态BLOCKED有什么区别? 该Thread.State文档: 已阻止 该线程在等待监视器锁定时被阻止,处于此状态。 等待中 无限期等待另一个线程执行特定操作的线程处于此状态 没有向我解释差异。 问题答案: 线程在调用对象后进入等待状态。这称为 等待 状态。一旦线程达到等待状态,它将需要等待,直到其他线程调用或对象上。 通知此线程后,它将无法运行。可能是其他线程
本文向大家介绍多处理和多线程之间的区别,包括了多处理和多线程之间的区别的使用技巧和注意事项,需要的朋友参考一下 多处理 多处理是指在单个系统中使用多个CPU /处理器。多个CPU可以并行运行,并一起执行多个进程。它们在很大程度上提高了计算能力。对称多重处理和非对称多重处理是两种类型的多重处理。 多线程 多线程是指由单个CPU执行的多个线程,使得每个线程以并行方式执行,并且CPU /处理器使用上下文
我已经阅读了一些基于这个主题的注释,虽然我对线程有了一般的理解,但我并不确定用户级线程和内核级线程之间的区别。 我知道进程基本上由多个线程或单个线程组成,但这些线程是前面提到的两种类型吗? 据我所知,内核支持的线程可以访问内核进行系统调用和其他用户级线程不可用的用途。 那么,用户级线程仅仅是程序员在使用内核支持的线程执行由于其状态而不能正常执行的操作时创建的线程吗?