- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 在实际中还有r方法(r-version)及自适应方法(adaptive method),以下主要讨论离散误差及 * * 在实际中还有r方法(r-version)及自适应方法(adaptive method),以下主要讨论离散误差及 * * 在实际中还有r方法(r-version)及自适应方法(adaptive method),以下主要讨论离散误差及 * * 在实际中还有r方法(r-version)及自适应方法(adaptive method),以下主要讨论离散误差及 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2.3.4 管程机制 2.管程的定义 一个管程定义了一个数据和能为并发进程执行的一组操作,这组操作能同步进程和改变管理中的数据。因此,管程是一种并发性的结构,它包括用于分配一个或一组共享资源的数据和过程,使用者使用时可忽略管程内部的实现细节,减轻了编程者负担。 管程由四部分组成: 管程的名称 局部于管程内部的共享数据结构说明 对该数据结构进行操作的一组过程 对管程内部共享数据设置初始值的语句 2.3.4 管程机制 3.条件变量 在任何时刻,最多只有一个进程在管程中执行,因此用管程很容易实现互斥,只要将需要互斥访问的资源用数据结构来描述,并将该数据结构放入管程中便可。但当一进程进入管程执行管程的某个过程时,如因某种原因而被阻塞,应立即退出该管程,否则会出现因阻挡其它进程进入管程,而它本身又无法退出管程,形成死锁。为此,系统中引入了条件变量。 条件变量的定义格式为:Var X:condition。 对条件变量只能执行以下两种操作: ① X.wait操作。 ② X.signal操作。 2.3.4 管程机制 x.wait:正在调用管程的进程因x条件需要被阻塞或挂起,则调用x.wait将自己插入到x条件的等待队列上,并释放管程,直到x条件变化。此时其它进程可以使用该管程。 x.signal:正在调用管程的进程发现x条件发生了变化,则调用x.signal,重新启动一个因x条件而阻塞或挂起的进程。如果存在多个这样的进程,则选择其中的一个,如果没有,则继续执行原进程,而不产生任何结果。这与信号量机制中的signal操作不同,因为后者总是要执行s:=s+1操作,因而总会改变信号量的状态。 2.3.4 管程机制 4.管程解决生产者—消费者问题 利用管程来解决生产者—消费者问题,首先为它们建立一个管程,命名为p_c。管程p_c中整型变量count表示缓冲池中己存放的产品数目,条件变量notfull、notempty分别对应于缓冲池不全满、缓冲池不全空两个条件。 此外,管程p_c中有两个局部过程: ①过程put:负责将产品投放到缓冲池中,当count≥n时,表示缓冲池已满,生产者进程需等待; ②过程get:负责从缓冲池中取出产品,当count≤0时,表示缓冲池已空,消费者进程需等待。 2.3.4 管程机制 管程p_c描述如下: type p_c=monitor Var in,out,count:integer; Buffer:array[0,…,n-1] of item; notfull, notempty:condition; procedure entry put(Var product:item) begin if count≥n then notfull.wait; /*不全满条件不成立*/ buffer[in]:=product; in:=(in+1)mod n; count:=count+1; notempty.signal; /*缓冲池不全空条件成立*/ end 2.3.4 管程机制 procedure entry get(Var product:item) begin if count≤
您可能关注的文档
最近下载
- DBJ51T 140-2020 四川省不透水土层地下室排水卸压抗浮技术标准.pdf VIP
- 中级无机化学(第二版)全书课件电子教案汇总.ppt
- 船舶保安员Z09_5384-航海知识.doc VIP
- 海尔管理案例分析.doc VIP
- DBJ51T 246-2024 四川省岩土工程勘察钻探护壁技术标准.pdf VIP
- (高清版)-B-T 28053-2023 铝合金内胆碳纤维全缠绕气瓶.pdf VIP
- 人教版高中物理必修第二册第8章机械能守恒定律1功与功率课件.ppt VIP
- 2025-2026学年山东省青岛市八年级上学期期中模拟英语试题(含解析).pdf VIP
- IEEE 1188-2005国外国际标准.pdf
- 安装、调试及验收方案,安装、调试及验收方案.doc VIP
原创力文档


文档评论(0)