程序设计语言原理PrincipleofProgrammingLanguage
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
接收语句在任务体中说明 accept〈入口项名〉[〈形参部分〉]do 处理语句序列 end 入口项标识符
入口语句和接收语句是同步出现的。
2020年4月12日9时1分
第12页
返回
程序设计语言原理
第7章
2、会合机制:
Ada83 的 会 合 机 制 是 通 信 的 顺 序 进 程 (CSP) 的 一 种 具 体 实 现 。
返回
2020年4月12日9时1分
第5页
程序设计语言原理
第7章
3、说明: (1)规格说明:定义该任务的用户可见的一些入口,即其他 任务可以利用的通信路径,该任务的用户只能通过任务提供的 入口来同此任务通信或交互。 (2)入口项说明:其形式类似于子程序规格说明,即先写入 口名字 ,后面跟形参。这些形参也可以有IN、OUT、IN OUT 模式,定义某个特定消息的传递方向。可以在子程序、程序包、 任务中调用任务的入口。
入口序标用于指定一个入口,形参部分要同相应入口声明中的形参部 分完全相同。在发生入口调用时,接受语句的执行如同子程序调用一样, 将与模式为in和in out的形参相结合的实参传递给形参,然后执行接受语句 的语句序列,最后将模式为out和in out的形参的值传递给相应的实参。
有了接受语句,就可以用成对的入口/接受结构实现简单的任务通信。
动时,所有任务要在该程序单元的语句序列执行前同时并发执行,只
有所有任务和该程序单元的语句序列全部执行完毕,该程序单元的执
行才结束。 例:
procedure PROC is task A; task body A is
…… end A; task B; task body B is
…… end B; begin //A.B被活化启动,同时执行 …….//PROC的语句序列 end PROC
并非每个任务都有入口项,该任务对于其它任务没有可见 的通信路径,通过调用其它任务的入口来完成其功能。
2020年4月12日9时1分
第6页
返回
程序设计语言原理
第7章
(3)表示子句:用来表示任务的优先级以指示任务的紧迫程 度。
例: task protected_stack is
pragma priority(7);--表示子句 entry pop(element:out integer);--入口声明 entry push(element:in integer); end protectde_stack ;
说明部分 begin
处理语句序列 [接受语句] end[任务标识符] 接受语句::=accept 入口标识符 [(入口序标)][形参部分]
[do 语句序列
end [入口标识符]];
返回
2020年4月12日9时1分
第4页
程序设计语言原理
第7章
2、任务的启动和终止
外包任务的程序单元(子程序、程序包、任务),语句序列将要启
2020年4月12日9时1分
第9页
返回
程序设计语言原理
第7章
(6)接受语句:如果为任务定义了入口,则它的任务体中相应于各个入口 至少应该包括一个接受语句。接受语句类似于一个子程序体。
接受语句::=accept <入口标识符> [<形参部分>] [do 语句序列
end [<入口标识符>]]; 入口序标::=表达式
2020年4月12日9时1分
第10页
返回
程序设计语言原理
第7章
(7)任务不得作为独立的物理模块,它在物理上必须包含在 其他子程序,程序包或任务中。
2020年4月12日9时1分
第11页
返回
程序设计语言原理
第7章
二、任务之间的通信和同步 任务之间的通信和同步通过入口调用语句与接收语句来实现。
1、格式:入口语句类似于过程说明,在规格说明 entry 〈标识符〉〈形参部分〉;
2020年4月12日9时1分
第3页
返回
程序设计语言原理
第7章
(2)任务说明:包括规格说明和体说明 规格说明::=task[type]任务标识符[可判定部分][is任务定义]
有type说明的是任务类型,否则说明的是任务对象。 任务定义::={任务项}
[private {任务项}]
end [任务标识符] 任务项::=入口项说明|表示子句 任务体::=task body 任务标识符号 is
(Hoare提出)
Biblioteka Baidu
会合的过程:
(1)申请的主动方:调用被动方的入口entry,这时被动方如果还没
有执行到accept语句,则主动方等待;
2020年4月12日9时1分
第7页
返回
程序设计语言原理
第7章
(4)任务类型:带有type的任务规格说明声明了一个任务类型。当一些任务具有相同性质时, 可把它们写成一个任务类型。有了任务类型可以声明任务的对象。
例: task type resource is
entry release; entry seize; end resource;--任务类型
task body resource is …… end resource;--任务体
Buffer: resource;--说明一个任务对象
Segment:array (1..100) of resource;--说明一个任务对象数组
返回
2020年4月12日9时1分
第8页
程序设计语言原理
第7章
(5)任务体:每个任务或任务类型的规格说明都有一个任务 体与之相关联。任务体定义了该任务或该任务类型的动作,其 形式与子程序体形式相似,由实现语句和可选的异常处理段组 成。在这引起语句中应有规格说明中声明的那些入口的接收语 句。
程序设计语言原理
第7章
第7章 并发和任务
并发概述 并发措施 ADA语言中的任务
2020年4月12日9时1分
第2页
返回
程序设计语言原理
第7章 7.7 Ada语言的并行处理机制:任务和同步 1、任务task (1)概念:任务是一种可以并发执行的程序单元。若干个任 务可以在单处理机上并发执行,也可以在多处理机上并行执 行。
程序设计语言原理
Principle of Programming Language
2020年4月12日9时1分
主讲:熊才权
湖北工业大学计算机学院
Hubei University of Technology School of Computer Science & Engineering
2006.2
第1页
入口语句和接收语句是同步出现的。
2020年4月12日9时1分
第12页
返回
程序设计语言原理
第7章
2、会合机制:
Ada83 的 会 合 机 制 是 通 信 的 顺 序 进 程 (CSP) 的 一 种 具 体 实 现 。
返回
2020年4月12日9时1分
第5页
程序设计语言原理
第7章
3、说明: (1)规格说明:定义该任务的用户可见的一些入口,即其他 任务可以利用的通信路径,该任务的用户只能通过任务提供的 入口来同此任务通信或交互。 (2)入口项说明:其形式类似于子程序规格说明,即先写入 口名字 ,后面跟形参。这些形参也可以有IN、OUT、IN OUT 模式,定义某个特定消息的传递方向。可以在子程序、程序包、 任务中调用任务的入口。
入口序标用于指定一个入口,形参部分要同相应入口声明中的形参部 分完全相同。在发生入口调用时,接受语句的执行如同子程序调用一样, 将与模式为in和in out的形参相结合的实参传递给形参,然后执行接受语句 的语句序列,最后将模式为out和in out的形参的值传递给相应的实参。
有了接受语句,就可以用成对的入口/接受结构实现简单的任务通信。
动时,所有任务要在该程序单元的语句序列执行前同时并发执行,只
有所有任务和该程序单元的语句序列全部执行完毕,该程序单元的执
行才结束。 例:
procedure PROC is task A; task body A is
…… end A; task B; task body B is
…… end B; begin //A.B被活化启动,同时执行 …….//PROC的语句序列 end PROC
并非每个任务都有入口项,该任务对于其它任务没有可见 的通信路径,通过调用其它任务的入口来完成其功能。
2020年4月12日9时1分
第6页
返回
程序设计语言原理
第7章
(3)表示子句:用来表示任务的优先级以指示任务的紧迫程 度。
例: task protected_stack is
pragma priority(7);--表示子句 entry pop(element:out integer);--入口声明 entry push(element:in integer); end protectde_stack ;
说明部分 begin
处理语句序列 [接受语句] end[任务标识符] 接受语句::=accept 入口标识符 [(入口序标)][形参部分]
[do 语句序列
end [入口标识符]];
返回
2020年4月12日9时1分
第4页
程序设计语言原理
第7章
2、任务的启动和终止
外包任务的程序单元(子程序、程序包、任务),语句序列将要启
2020年4月12日9时1分
第9页
返回
程序设计语言原理
第7章
(6)接受语句:如果为任务定义了入口,则它的任务体中相应于各个入口 至少应该包括一个接受语句。接受语句类似于一个子程序体。
接受语句::=accept <入口标识符> [<形参部分>] [do 语句序列
end [<入口标识符>]]; 入口序标::=表达式
2020年4月12日9时1分
第10页
返回
程序设计语言原理
第7章
(7)任务不得作为独立的物理模块,它在物理上必须包含在 其他子程序,程序包或任务中。
2020年4月12日9时1分
第11页
返回
程序设计语言原理
第7章
二、任务之间的通信和同步 任务之间的通信和同步通过入口调用语句与接收语句来实现。
1、格式:入口语句类似于过程说明,在规格说明 entry 〈标识符〉〈形参部分〉;
2020年4月12日9时1分
第3页
返回
程序设计语言原理
第7章
(2)任务说明:包括规格说明和体说明 规格说明::=task[type]任务标识符[可判定部分][is任务定义]
有type说明的是任务类型,否则说明的是任务对象。 任务定义::={任务项}
[private {任务项}]
end [任务标识符] 任务项::=入口项说明|表示子句 任务体::=task body 任务标识符号 is
(Hoare提出)
Biblioteka Baidu
会合的过程:
(1)申请的主动方:调用被动方的入口entry,这时被动方如果还没
有执行到accept语句,则主动方等待;
2020年4月12日9时1分
第7页
返回
程序设计语言原理
第7章
(4)任务类型:带有type的任务规格说明声明了一个任务类型。当一些任务具有相同性质时, 可把它们写成一个任务类型。有了任务类型可以声明任务的对象。
例: task type resource is
entry release; entry seize; end resource;--任务类型
task body resource is …… end resource;--任务体
Buffer: resource;--说明一个任务对象
Segment:array (1..100) of resource;--说明一个任务对象数组
返回
2020年4月12日9时1分
第8页
程序设计语言原理
第7章
(5)任务体:每个任务或任务类型的规格说明都有一个任务 体与之相关联。任务体定义了该任务或该任务类型的动作,其 形式与子程序体形式相似,由实现语句和可选的异常处理段组 成。在这引起语句中应有规格说明中声明的那些入口的接收语 句。
程序设计语言原理
第7章
第7章 并发和任务
并发概述 并发措施 ADA语言中的任务
2020年4月12日9时1分
第2页
返回
程序设计语言原理
第7章 7.7 Ada语言的并行处理机制:任务和同步 1、任务task (1)概念:任务是一种可以并发执行的程序单元。若干个任 务可以在单处理机上并发执行,也可以在多处理机上并行执 行。
程序设计语言原理
Principle of Programming Language
2020年4月12日9时1分
主讲:熊才权
湖北工业大学计算机学院
Hubei University of Technology School of Computer Science & Engineering
2006.2
第1页