• 进程与线程


    进程是程序的一次执行,线程可以理解为进程中的执行的一段程序片段。

    一个程序至少有一个进程,一个进程至少有一个线程。
    进程是操作系统资源分配的基本单位,而线程是操作系统执行的最小单位。

    地址空间和资源分配:进程有独立的地址空间,比如在linux下面启动一个新的进程,系统必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种非常昂贵的多任务工作方式。而运行一个进程中的线程,它们之间共享大部分数据,使用相同的地址空间,因此线程的创建,销毁及调度的开销一般都远小于进程。当然,线程拥有自己的局部变量和堆栈(注意不是堆)。
    通信:线程之间的通信比较方便。同一进程下的线程共享数据(比如全局变量,静态变量),通过这些数据来通信不仅快捷而且方便,当然如何处理好这些访问的同步与互斥正是编写多线程程序的难点。而进程之间的通信只能通过进程通信的方式进行。
    相互关系:进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在;线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

    进程和线程有时候并不完全区分,而往往根据上下文理解其含义。

    参考资料:

    [1] 面试总结-进程、线程与多线程
    http://www.cnblogs.com/obama/archive/2013/04/12/3016509.html

  • 相关阅读:
    Python3.6中PyInstaller不能对文件进行打包问题
    itchat和matplotlib的结合使用爬取微信信息
    NumPy笔记
    Spyder在windows下常用快捷键
    React 省市区三级联动
    react-router 4.0中跳转失灵
    React+ajax+java 上传图片并预览
    CMDB与自动化运维,一切尽在掌握中?
    XSS跨站脚本攻击
    shell脚本?
  • 原文地址:https://www.cnblogs.com/li-chong/p/3251415.html
Copyright © 2020-2023  润新知