• 进程概念总结


    最近刚刚学习多进程,对于多进程的概念我自己总结一下

    每一个程序启动后都会在系统中产生一个进程来处理这个程序

    但是一个进程运行速度毕竟有限,在程序中有一些比较耗时的操作程序就只能是卡死的状态,为了解决这个问题,就出现了多进程。让耗时的工作创建一个子进程让子进程去工作,主进程运行自己的。
    但子进程多了也会出现问题:
    1、孤儿进程
    2、僵尸进程

    但是使用多进程的时候又出现了进程之间数据共享的问题,这时候进程间的通信就需要解决。目前知道的解决办法是用:
    1、文件
    2、管道
    3、队列
    4、共享内存
    以上数据共享类型的区别在于:
    管道:操作起来麻烦,读的时候不能写。写的时候不能读。如果在写的时候不关闭读操作,在读的时候可能会出现问题
    队列:操作简单,一般推荐使用。
    共享内存:共享内存与(管道、队列)区别在于,管道和队列在创建时需要单独在内存中开辟一块空间进行操作。而共享内存则不需要单独开辟空间读写更快捷

    在多进程间,又会产生进程间数据错误的问题,原因是两个进程访问一个变量最终的结果改变会出现问题如:
    A、B进程 访问  共享内存 a1  = 10
    A进程的操作是将a1的值减1
    B进程的操作是将a1的值加1
    此时两个进程同时访问a1变量
    在A进程没有改变a1值得情况下B进程已经获取到了a1的原始值 10 此时B进程改变a1的值就会覆盖A进程改变后的值9
    此时a1的值为11
    为了进程间访问变量互斥的问题就需要有序的操作变量(加锁):
    互斥:在A进程操作a1变量的时候加一个锁,B进程此时等待解锁之后再进行操作此变量

  • 相关阅读:
    leetcode笔记--7 Find the Difference
    数据挖掘:概念与技术--笔记1--度量数据的相似性与相异性
    leetcode笔记--6 Add Digits
    leetcode 笔记5 single number
    数据挖掘导论笔记2 数据集的类型
    **leetcode笔记--4 Sum of Two Integers
    vs2015-Cordova开发安卓应用环境搭建
    c#一些常用的方法集合
    c#根据ip获取城市地址
    asp.net mvc 无刷新加载
  • 原文地址:https://www.cnblogs.com/laolibk/p/8011742.html
Copyright © 2020-2023  润新知