进程和线程的区别
为了让计算机一次执行多个活动,进程和线程都提供了很好的服务,但它们的运行方式有所不同。计算机上运行的所有程序至少使用一个进程或线程。进程和线程让处理器在共享计算机资源的同时在多个任务之间平滑切换。因此,程序员有责任以有效的方式使用线程和进程来制作具有高性能的程序。线程和进程的实现因可用的操作系统而异
什么是进程?
一般而言,进程是一系列连续的行动,以实现特定的结果。但是,在计算机中,进程是执行计算机程序的实例。换句话说,它是一个运行的计算机程序的概念。简单的进程正在运行包含一个或多个线程的二进制文件。
根据进程中涉及的线程数,有两种类型的进程。它们是单线程进程和多线程进程。顾名思义,单线程进程是一个只有一个线程的进程。因此,此线程是一个进程,并且只发生一个活动。在多线程进程中,有多个线程,并且正在发生多个活动。
两个或多个进程可以使用进程间通信在彼此间进行通信。但这很困难,需要更多资源。在创建新进程时,程序员必须做两件事。它们是父进程的复制以及新进程的内存和资源分配。所以这真的很贵。
什么是线程?
在IT领域,线程是计算机程序指令的最小执行单元,可以根据计划独立管理。线程是进程内的简单执行路径。线程与进程一样强大,因为线程可以执行进程的任何操作。线程是一个轻量级进程,只需要更少的资源。同一进程中,线程可以读取和写入相同的变量和数据结构变量且线程可以轻松地在线程之间通信。
今天,多线程已成为解决许多问题的自然方法。一项大工作分为几个部分,每个部分都分配给一个称为线程的执行单元,这只是简单多线程。这需要仔细编程,因为线程共享由另一个线程修改的数据结构,并且因为线程共享相同的地址空间。线程的另一个优点是线程提供了一种实现并行性的有效的方法。通过让多个线程在多个处理器上运行可以增加系统的吞吐量,因为线程是可独立调度的实体。
Process和Thread有什么区别?
- 进程很难创建,因为它需要复制父进程和内存分配,而线程很容易创建,因为它们不需要单独的地址空间。
- 线程用于简单任务,而进程用于执行应用程序等繁重的任务。
- 进程不共享相同的地址空间,但同一进程中的线程共享相同的地址空间。
- 进程彼此独立,但线程是相互依赖的,因为它们共享相同的地址空间。
- 进程可以包含多个线程。
- 由于线程共享相同的地址空间,因此虚拟化内存仅与进程相关联,而与线程无关。但是,一个独特的虚拟化处理器与每个线程相关联。
- 每个进程都有自己的代码和数据,而进程的线程共享相同的代码和数据。
- 每个进程都以主线程开始,但如果需要,它可以创建其他线程。
- 进程之间的上下文切换比同一进程的线程之间的上下文切换慢得多。
- 线程可以直接访问其数据段,但进程拥有自己的数据段副本。
- 进程有系统消耗,但线程没有。
本文由 Difference Between Process and Thread 经谷歌翻译和手动修改而来,能力有限,如有问题请看原文,有建议请留言指出。