zoukankan      html  css  js  c++  java
  • 线程VS进程

    线程 VS 进程

    多线程可以并行处理任务,但是线程是不能单独存在的,它是由进程来启动和管理的。那什么又是进程呢?一个进程就是一个程序的运行实例。详细解释就是,启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。

    从图中可以看到,线程是依附于进程的,而进程中使用多线程并行处理能提升运算效率。

    总结来说,进程和线程之间的关系有以下 4 个特点。

    1. 进程中的任意一线程执行出错,都会导致整个进程的崩溃。

    2. 线程之间共享进程中的数据。

    如下图所示,线程之间可以对进程的公共数据进行读写操作。

     从上图可以看出,线程 1、线程 2、线程 3 分别把执行的结果写入 A、B、C 中,然后线程 2 继续从 A、B、C 中读取数据,用来显示执行结果。

    3. 当一个进程关闭之后,操作系统会回收进程所占用的内存。当一个进程退出时,操作系统会回收该进程所申请的所有资源;即使其中任意线程因为操作不当导致内存泄漏,当进程退出时,这些内存也会被正确回收。比如之前的 IE 浏览器,支持很多插件,而这些插件很容易导致内存泄漏,这意味着只要浏览器开着,内存占用就有可能会越来越多,但是当关闭浏览器进程时,这些内存就都会被系统回收掉。

    4. 进程之间的内容相互隔离。进程隔离是为保护操作系统中进程互不干扰的技术,每一个进程只能访问自己占有的数据,也就避免出现进程 A 写入数据到进程 B 的情况。正是因为进程之间的数据是严格隔离的,所以一个进程如果崩溃了,或者挂起了,是不会影响到其他进程的。如果进程之间需要进行数据的通信,这时候,就需要使用用于进程间通信(IPC)的机制了。

  • 相关阅读:
    MapReduce Demo
    Hadoop Api 基本操作
    Dapper with MVC MiniProfiler
    使用Azure Blob存储
    Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again.
    Netbeans导入Nutch1.2
    Error 2103 “Unhandled Error in Silverlight Application“ 解决办法
    读取nutch爬取内容方法
    转 nutch网页快照乱码解决方法
    fast neural style transfer图像风格迁移基于tensorflow实现
  • 原文地址:https://www.cnblogs.com/linm/p/12598842.html
Copyright © 2011-2022 走看看