zoukankan      html  css  js  c++  java
  • 进程、子进程、线程

    我拿Windows举例子吧, 因为Linux的内核好像是没有线程概念的.
    进程和线程的区别在于粒度不同, 进程之间的变量(或者说是内存)是不能直接互相访问的, 而线程可以, 线程一定会依附在某一个进程上执行.

    我举个例子, 你在Windows下开一个IE浏览器, 这个IE浏览器是一个进程.
    你用浏览器去打开一个pdf, IE就去调用Acrobat去打开, 这时Acrobat是一个独立的进程, 就是IE的子进程.
    而IE自己本身同时用同一个进程开了2个网页, 并且同时在跑两个网页上的脚本, 这两个网页的执行就是IE自己通过两个线程实现的.

    值得注意的是, 线程仍然是IE的内容, 而子进程Acrobat严格来说就不属于IE了, 是另外一个程序.
    之所以是IE的子进程, 只是受IE调用而启动的而已.
    追问:

    那我可不可以这样理解,父进程创建了一个子进程,只要给这个子进程分配一定的任务,他们从此就没有关系了 。。。。
    追答:

    也不能这么说从此就没关系了, 父进程还是可以通过和子进程通信来获得一些信息的. 拿上面的例子来说, IE可以通过一些进程间通信的接口来知道Acrobat是否顺利的把pdf打开了之类的信息. 但有一点我觉得你的理解基本正确, 就是父进程和子进程是独立的. 假如IE开了一个病毒子进程, 子进程不听话, 父进程也没什么特别的办法, 除了向系统申请去关闭它之外.

    区分子进程和线程很简单:
    一个独立程序的运行称为一个进程, 在进程里并发执行的不同部分称为线程. 由这个进程引发的另外的独立程序运行为这个进程的子进程. (基本上就是这样, 更加严格的定义建议参考操作系统的教科书)
    转自https://blog.csdn.net/msg1122/article/details/82911644

  • 相关阅读:
    jmeter使用教程
    Jmeter的好搭档Badboy的安装与简单使用
    十大编程算法助程序员走上高手之路
    polyfillJS生成promise对象
    js+canvas实现滑动拼图验证码功能
    WebAssembly介绍
    解释器与编译器
    使用axios优雅的发起网络请求
    【javascript】script标签的async异步解析
    sass用法快速入门
  • 原文地址:https://www.cnblogs.com/as3lib/p/14495808.html
Copyright © 2011-2022 走看看