zoukankan      html  css  js  c++  java
  • 关于P,V操作理解的突破,关于并发设计与并行

    今天又找了一篇博客研究P,V操作。。

    发现。。它有一个变量没有声明。。

    我就换了篇博客。。http://c.biancheng.net/cpp/html/2600.html

    然后就看懂了。。

    关键突破在于while循环分号的位置

    以及并行执行的理解。。这个是大坑。。

    意思就是说在同一个时间的段内!段很重要。。有不同的任务的执行交叠在一起

    https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/

    上面的文章分析完之后我就知道这个并发的结构了。。

    我认为进展性就是。。执行完一句话必然下次轮到这个进程时要执行下一句话

    这样你的程序才能执行完。。按照我之前的理解。。每次都执行第一句。。太蠢了。。

    这样永远执行不完。。

    那么这里还有一个前提。。我们如何实现逻辑上task-level的并发结构

    那么,如何实现支持并发的设计?两个字:拆分

    之所以并发设计往往需要把流程拆开,是因为如果不拆分也就不可能在同一时间段进行多个任务了。这种拆分可以是平行的拆分,比如抽象成同类的任务,也可以是不平行的,比如分为多个步骤。

    这个是一个很基础的思路

    那么上图的结构也是在说一次可能执行一句一次也可能执行多句。。但是,在任何一个时间点上都只有一段代码在执行

    注意区分时间点和时间段

    ============

    并发程序有一个显然的性质。。并行的执行过程可以被分解成顺序执行的过程。。前提是要固定在一定时间范围内不变

    count=1;同时取count和,count在时间不变的情况下依次被p1,p2取或p2,p1取是一样的。。

    那么这里还有一个性质那就是并行分解成顺序的。。那么是和‘order’无关的。。

    ==========

    如果你while分号看错的话。。就炸了。。很费解的。。

    所以我们有时候还是要检验输入脑内数据的正确性。。已经问题的约束条件。。

    然后还有一个前提就是搞明白程序执行的顺序。。

    ==========

    那么当前这个理解的状态下。。是每次挑一个调度的进程去执行一句话。。

    那么对于P,V原语和硬件操作都是原子操作。。不可中断的

    当然还有软中断就是强行关闭中断。。以后再说。。

    原子操作可能包含了多个语句。。这种情况例外。。我们仍然当成一句来管

    ==========

    解决书上看不懂的思路是。。

    明确书上的内容是否和你想的一样。。

    对于并发执行困惑去查资料。。大概明白了这是一种执行结构

    以及对于书上各种概念和条件约束牢牢记住,比如说。。进程。。

    原语。。中断。。

    ========

    12.26增加感悟。。

    P,V操作是成对出现的。。在程序的执行路径上成对出现

    并且P,V操作的核心是信号量和等待队列(其中一种实现P,V操作的方法)

    以及何时加入等待队列何时从等待队列中删除

    是P,V原语操作的核心

    ===========

    总结。。检查输入。。检查概念。。检查条件

    一定把前面的依赖项。。疑惑的东西都解决了再往下看。。

    是解决看不懂书的一个思路

  • 相关阅读:
    ROS2概述和实践入门
    ROS2与FastRTPSROS2与FastRTPS
    RoboWare Studio已经停更
    ubuntu20.04 Roboware安装遇到的问题
    Ubuntu16.04安装ROS2
    拥抱ROS2系列:ROS2概述和实践入门(一)
    clash for Linux安装使用
    Ubuntu 安装RoboWare
    Ubuntu 18.04 安装VSCode
    开源ImageFilter库For IOS源码发布
  • 原文地址:https://www.cnblogs.com/linkzijun/p/6221138.html
Copyright © 2011-2022 走看看