程序设计语言与编译ppt课件_3.4 协同程序、并发单元.pptxVIP

程序设计语言与编译ppt课件_3.4 协同程序、并发单元.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第三章控制结构;多个程序单元交错地执行——协同程序。

设有单元C1和C2,由C1先开始执行,当执行到C1的“resumeC2”命令时,

显式激活C2,暂停C1的执行,将控制转向C2的执行点;

若C2执行到某个“resumeC1”命令时,暂停C2的执行

恢复C1的执行(将控制转移到C1的执行点,继续执行下去)

……

;C1和C2似乎在并行地执行——伪并行。

实际上,C1和C1是在交错地执行,它是并行的一种低级形式。

常规的子程序机制不能描述并行执行的程序单元。

CLU和SIMULA67等语言设置了描述这种交错执行过程的机制。

;协同程序;第三章控制结构;诸进程的执行概念上是可重叠的,即正在执行的进程尚未终止,另一个进程可能开始执行,诸程序单元“并行”活动。例如“生产者-消费者”问题:

单元producer

repeat

生产一个元素;

存放该元素到缓冲区;

forever

;正确访问缓冲区:

不会向已满的缓冲区写数据;

不会从空缓冲区读数据。

;append是生产者向缓冲区存数的操作,remove是消费者从缓冲区取数的操作,设t表示所存项目总数,这两个操作都要修改t的值,相应执行下列两个操作来实现:

(1)t:=t+1

(2)t:=t-1

;假定(1)和(2)是这样实现的:

读t到一个专用寄存器;

更新专用寄存器的值;

将专用寄存器的值写到t。

执行(1)时不能执行(2),反之亦然。

即(1)和(2)必须以互斥的方式执行,(1)或(2)是不可分的操作。

文档评论(0)

Kaiser + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档