woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

关于协同例程

子例程(subroutine)是经常使用的一种程序流程,父例程在调用子例程的时候暂时中断自身的流程,将控制转到子例程的起点,然后一直到子例程返回才继续父例程的流程。这是一种栈式的调用,就是说后进入的子例程,却要先返回。因此许多程序都是用栈来存放子例程的局部运行环境,因为当子例程返回 后,这个局部的运行环境就不需要了,也就是后进先出。

然而,有些例程之间并不是父例程调用子例程这种嵌套的关系,而是并行的协同关系,当一个例程运行时,需要另外一个例程所不断产生的结果,例如两个通过管道连接的程序就是这样的关系。例程A需要数据,就把控制传递到例程B,而B产生一些数据,然后把控制返回给AA处理完这些数据 以后会需要更多的数据,于是又把控制传给B,这时并不是A重新调用B,而是恢复B刚才运行的断点,让B可以按照自己原先的流程继续运行。例程A和例程B的 运行环境都需要保持,不存在谁必须先退出才能转移控制的问题。控制在这两个例程间跳来跳去,它们是协同的关系,例程B就成为例程A的协同例程,而不是子例 程了。

 

posted on 2009-08-20 00:08 肥仔 阅读(293) 评论(0)  编辑 收藏 引用 所属分类: C++ 基础


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理