4. 生产者消费者例子 var q := new queue 生产者协程( producer ) loop while q is not full create some new items add the items to q yield to consumer # 协程切换 消费者协程 ( consumer ) loop while q is not empty remove some items from q use the items yield to producer # 协程切换 每个协程在用 yield 命令 向另一个协程交出控制 时都尽可能做了更多的 工作。 放弃控制使得另一个 例程从这个例程停止 的地方开始,但因为 现在队列被修改了 所以他可以做更多 事情。 尽管这个例子常用来 介绍多线程,实际没有 必要用多线程实现 这种动态: yield 语句可以通过 由一个协程向另一个 协程直接分支的方式 实现。