关于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原语操作的核心
===========
总结。。检查输入。。检查概念。。检查条件
一定把前面的依赖项。。疑惑的东西都解决了再往下看。。
是解决看不懂书的一个思路
关于P,V操作理解的突破,关于并发设计与并行的更多相关文章
- 关于P,V操作理解的分析
P-V操作定义: 假设sem是个整型变量. P原语的主要操作是: (1)sem减1: (2)若sem减1后仍大于或等于零,则该进程继续执行: (3)若sem减1后小于零,则该进程被阻塞,在相应队列 ...
- 操作系统中的P,V操作(转)
无论是计算机考研.计算机软件水平考试.计算机操作系统期末考试还是其他计算机岗位考试,P.V原语操作都是一个常考点.下面笔者总结了关于P.V操作的一些知识. 信号量是最早出现的用来解决进程同步与互斥问题 ...
- P.V操作【转】
阐述P,V原语的理论不得不提到的一个人便是赫赫有名的荷兰科学家 E.W.Dijkstra.如果你对这位科学家没有什么印象的话,提起解决图论中最短路径问题的Dijkstra算法应当是我们再熟悉不过的了. ...
- P,V操作及同步互斥实例
无论是计算机考研.计算机软件水平考试.计算机操作系统期末考试还是其他计算机岗位考试,P.V原语操作都是一个常考点.下面笔者总结了关于P.V操作的一些知识. 信号量是最早出现的用来解决进程同步与互斥问题 ...
- P,V操作实例分析
刚开始学习操作系统的时候,就听说PV操作,简单说说PV操作. ● P(S): S=S-1 如果S≥0,则该进程继续执行: S<0,进程暂停执行,放入信号量的等待队列 ...
- Linux-信号量与P,V操作
Linux-信号量与P,V操作 内容 使用信号量实现进程互斥 使用信号量及PV实现子进程读写同步 机理 Linux信号量集 Linux信号量作为IPC机制的一种,与其他通信方式类似,Linux也是通过 ...
- 另类P、V操作问题-详细图解
问题模型 有一个系统,定义如下P.V操作: P(s): s.count--; then 将本进程插入相应队列末尾等待; V(s): s.count++; then 从相应等待队列队尾唤醒一个进程,将其 ...
- 我所理解的RESTful Web API [设计篇]
<我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...
- 理解RESTful架构——Restful API设计指南
理解RESTful架构 Restful API设计指南 理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...
随机推荐
- 用R做逻辑回归之汽车贷款违约模型
数据说明 本数据是一份汽车贷款违约数据 application_id 申请者ID account_number 账户号 bad_ind 是否违约 vehicle_year ...
- 07-本地 YUM 源制作
1.YUM相关概念 1.1.什么是YUM YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基 ...
- Apache SolrCloud安装
1.介绍 SolrCloud通过ZooKeeper集群来进行协调,使一个索引进行分片,各个分片可以分布在不同的物理节点上,多个物理分片组成一个完成的索引Collection.SolrCloud自动支 ...
- input事件与change事件
输入框的change事件: 必须等到输入框失去焦点的时候才会触发,鼠标在空白的地方点一下: 输入框的input事件: 在输入内容变化的同时,实时的触发,不需要等到失去焦点.
- WinForm 进程、线程、TreeView递归加载、发送邮件--2016年12月13日
进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start(); Process.S ...
- SPOJ FTOUR2 - Free tour II
Description 有些黑点,问你选择不超过 \(k\) 个黑点的路径,路径权值最大是多少. Sol 点分治. 这是qzc的论文题,不过我感觉他的翻译好强啊...我还是选择了自己去看题目... 点 ...
- Linux下用户组、文件权限详解
在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念 - 所有者 - 所在组 - 其它组 - 改变用户所在的组 所有者 一般为文件的创建者,谁创 ...
- Python之路,Day8 - Python基础 面向对象高级进阶与socket基础
类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的 ...
- POJ 2352 Stars 线段树
题目链接 题意:在一个二维平面上有n个星星,每个星星的等级为x,x为该星星左方和下方所包含的星星的数量(包含正左和正下的),输出每个等级各有多少星星,星星坐标按照y序递增给出,y值相同按照x递增给出. ...
- 7.iOS Notification
1. 通知中心认识 通知中心实际上是在程序内部提供了消息广播的一种机制.通知中心不能在进程间进行通信,它只能进行程序内部通信,不能跨应用程序进程通信.通知中心,当通知中心接受到消息后会根据设置,根据内 ...