今天又找了一篇博客研究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原语操作的核心

===========

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

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

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

关于P,V操作理解的突破,关于并发设计与并行的更多相关文章

  1. 关于P,V操作理解的分析

      P-V操作定义: 假设sem是个整型变量. P原语的主要操作是: (1)sem减1: (2)若sem减1后仍大于或等于零,则该进程继续执行: (3)若sem减1后小于零,则该进程被阻塞,在相应队列 ...

  2. 操作系统中的P,V操作(转)

    无论是计算机考研.计算机软件水平考试.计算机操作系统期末考试还是其他计算机岗位考试,P.V原语操作都是一个常考点.下面笔者总结了关于P.V操作的一些知识. 信号量是最早出现的用来解决进程同步与互斥问题 ...

  3. P.V操作【转】

    阐述P,V原语的理论不得不提到的一个人便是赫赫有名的荷兰科学家 E.W.Dijkstra.如果你对这位科学家没有什么印象的话,提起解决图论中最短路径问题的Dijkstra算法应当是我们再熟悉不过的了. ...

  4. P,V操作及同步互斥实例

    无论是计算机考研.计算机软件水平考试.计算机操作系统期末考试还是其他计算机岗位考试,P.V原语操作都是一个常考点.下面笔者总结了关于P.V操作的一些知识. 信号量是最早出现的用来解决进程同步与互斥问题 ...

  5. P,V操作实例分析

    刚开始学习操作系统的时候,就听说PV操作,简单说说PV操作. ●  P(S): S=S-1 如果S≥0,则该进程继续执行:               S<0,进程暂停执行,放入信号量的等待队列 ...

  6. Linux-信号量与P,V操作

    Linux-信号量与P,V操作 内容 使用信号量实现进程互斥 使用信号量及PV实现子进程读写同步 机理 Linux信号量集 Linux信号量作为IPC机制的一种,与其他通信方式类似,Linux也是通过 ...

  7. 另类P、V操作问题-详细图解

    问题模型 有一个系统,定义如下P.V操作: P(s): s.count--; then 将本进程插入相应队列末尾等待; V(s): s.count++; then 从相应等待队列队尾唤醒一个进程,将其 ...

  8. 我所理解的RESTful Web API [设计篇]

    <我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...

  9. 理解RESTful架构——Restful API设计指南

    理解RESTful架构 Restful API设计指南 理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...

随机推荐

  1. Eclipse启动Tomcat时server.xml和content.xml自动还原问题

    当我们在处理中文乱码或是配置数据源时,我们要修改Tomcat下的server.xml和content.xml文件. 但是当我们修改完后重启Tomcat服务器时发现xml文件又被还原了,修改无效果. 为 ...

  2. .Net Core 杂记

    在学习.net core的路上,遇到很多坑,慢慢了解了.net core设计理念和设计思想(纯属跟人理解). 再此整理了之前写的一些学习笔记,后续也会把新的学习新的加上. 1..net core 跨平 ...

  3. 一行神奇的javascript代码

    写本篇文章的缘由是之前群里@墨尘发了一段js代码,如下: (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~ ...

  4. MySQL 从 5.5 升级到 5.6,启动时报错 [ERROR] Plugin 'InnoDB' init function returned error

    MySQL 从 5.5 升级到 5.6,启动时报错: [ERROR] Plugin 'InnoDB' init function returned error. [ERROR] Plugin 'Inn ...

  5. Autoit中用PrintWindow替代ScreenCapture函数实现截图

    想截取躲在后面的窗体或控件,找到了PrintWindow函数,幸运的是Autoit3也对此进行了封装以方便使用. 于是乎,将帮助文件里的_WinAPI_PrintWindow()实例改写了一下,以替代 ...

  6. js瀑布流 原理实现揭秘 javascript 原生实现

    web,js瀑布流揭秘 瀑布流再很久之前流行,可能如我一样入行晚的 ,可能就没有机会去使用.但是这个技术终究是个挺炫酷的东西,花了一个上午来研究,用原生js实现了一个,下面会附上源码,供大家解读. 说 ...

  7. Android Duplicate files copied in APK

    今天调试 Android 应用遇到这么个问题: Duplicate files copied in APK META-INF/DEPENDENCIES File 1: httpmime-4.3.2.j ...

  8. python ConfigParser 模块

    ConfigParser的函数方法 读取配置文件 read(filename) 直接读取ini文件内容 sections() 得到所有的section,并以列表的形式返回 options(sectio ...

  9. asp:Repeater实例备忘

    1.前置部分 <asp:Repeater ID="rptPlanNo" runat="server" OnItemDataBound="rptP ...

  10. 关于更新发布CSS和JS文件的缓存问题

    现如今,浏览器大战下,各个浏览器也是拼了命的提高性能,升级JS解析引擎,更好的处理浏览器的页面缓存,让用户的浏览体验更快,占用更小的PC资源.那么,问题就出现在JS和CSS缓存,甚至页面缓存上.至于浏 ...