进程与线程
为了让计算机一次完成多个活动,进程和线程都提供了很好的服务,但它们在操作方式上是有区别的。计算机上运行的所有程序都至少使用一个进程或线程。进程和线程允许处理器在共享计算机资源的同时在多个任务之间平滑切换。因此,程序员的职责是以高效的方式使用线程和进程来**高性能的处理器。线程和进程的实现因可用的操作系统而异。
什么是一个过程(a process)?
一般来说,一个过程是为了达到特定结果而进行的一系列连续的行动。但是,在计算机世界中,进程是一个正在执行的计算机程序的实例。换句话说,它是一个正在运行的计算机程序的一次出现。简单地说,进程是运行包含一个或多个线程的二进制文件。
根据进程中涉及的线程数,有两种类型的进程。它们是单线程进程和多线程进程。顾名思义,单线程进程就是只有一个线程的进程。因此,这个线程是一个进程,只有一个活动正在发生。在多线程进程中,有多个线程,并且有多个活动正在发生。
两个或多个进程可以使用进程间通信相互通信。但这是相当困难的,需要更多的资源。当开发一个新的过程时,程序员必须做两件事。它们是父进程的复制,以及为新进程分配内存和资源。所以这真的很贵。
什么是一根线(a thread)?
在IT世界中,线程是计算机程序中可以根据时间表独立管理的最小指令执行量。线程是进程中执行的简单路径。线程和进程一样强大,因为线程可以执行进程可以执行的任何操作。线程是一个轻量级的进程,只需要较少的资源。线程可以读写相同的变量和数据结构变量。线程可以很容易地在线程之间进行通信。
今天,多线程已经成为解决许多问题的自然方法。一个大的工作被分成几个部分,每个部分被分配到一个称为线程的执行单元。这只是多线程。这需要谨慎的编程,因为线程共享一次由另一个线程修改的数据结构,也因为线程共享相同的地址空间。线程的另一个优点是线程提供了实现并行的有效方法。一个系统的吞吐量可以通过让多个线程在多个处理器上运行来提高,因为线程是一个独立的可调度实体。
过程(process)和线(thread)的区别
•进程很难创建,因为它需要父进程的复制和内存分配,而线程则很容易创建,因为它们不需要单独的地址空间。
•线程用于简单任务,而进程用于重任务,如执行应用程序。
•进程不共享相同的地址空间,但同一进程中的线程共享相同的地址空间。
•进程彼此独立,但线程是相互依赖的,因为它们共享相同的地址空间。
•可由多个线程组成。
•由于线程共享相同的地址空间,虚拟化内存只与进程关联,而与线程无关。但是每个线程都有一个不同的虚拟化处理器。
•每个进程都有自己的代码和数据,而进程的线程共享相同的代码和数据。
•每个进程从一个主线程开始,但如果需要,它可以创建额外的线程。
•进程之间的上下文切换比同一进程的线程之间的上下文切换慢得多。
•线程可以直接访问其数据段,但进程有自己的数据段副本。
•进程有开销,但没有线程。
小结:
进程与线程
进程和线程是程序员为了有效地控制处理器和指令在计算机上的执行而使用的两种技术。一个进程可以包含多个线程。线程提供了一种有效的共享内存的方法,尽管它比进程运行多个执行。因此,线程可以替代多个进程。随着多核处理器的发展趋势,线程将成为程序员最重要的工具。
- 多线程示例马蒂亚斯。坎普(抄送2.0)