• 进程、子进程、线程


    我拿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

  • 相关阅读:
    索引总结篇
    数据库的安全管理
    数据库备份对日志文件的影响
    数据文件与日志文件读取机制
    更新操作所带来的影响
    页拆分-产生碎片
    你不可不知的T-SQL执行顺序
    实用T-SQL收集
    Left Join的神奇效果
    我对数据库索引的理解
  • 原文地址:https://www.cnblogs.com/as3lib/p/14495808.html
Copyright © 2020-2023  润新知