Events 协同程序与事件驱动编程
关于维基百科中的例子:Events 协同程序与事件驱动编程,events,coroutine,event-driven-design,Events,Coroutine,Event Driven Design,关于维基百科中的例子: 我只是想知道传统的基于事件的方法能够处理这种使用模式,为什么需要使用协同程序?我认为协同程序是“传统的”,而事件是“现代的”。但是,它们也有不同的目的;好的,当事件是松散耦合的通信时,协同路由可以指定在何处传输控制(如方法调用),也可以指定在何处使用协同路由 如果你对这些东西感兴趣,一定要阅读(2010年10月)关于接续传球风格的文章。有一篇文章的标题是“在事件驱动编程中,如果您在状态机上工作,则需要显式地保持当前状态,并通过使用开关或一系列回调来处理处于该状态的工作。
我只是想知道传统的基于事件的方法能够处理这种使用模式,为什么需要使用协同程序?我认为协同程序是“传统的”,而事件是“现代的”。但是,它们也有不同的目的;好的,当事件是松散耦合的通信时,协同路由可以指定在何处传输控制(如方法调用),也可以指定在何处使用协同路由
如果你对这些东西感兴趣,一定要阅读(2010年10月)关于接续传球风格的文章。有一篇文章的标题是“在事件驱动编程中,如果您在状态机上工作,则需要显式地保持当前状态,并通过使用开关或一系列回调来处理处于该状态的工作。这些程序是非线性的
在基于协程的系统中,您可以像通常编写单线程程序一样编写线性程序,但不是在每个事件等待点阻塞,而是切换上下文,让其他组件执行其工作,直到事件发生。在许多基于协同路由的系统中,您会发现一个事件循环,在事件到达时驱动协同路由和在协同路由中切换。感谢您的精彩博客推荐!
var q := new queue
coroutine produce
loop
while q is not full
create some new items
add the items to q
yield to consume
coroutine consume
loop
while q is not empty
remove some items from q
use the items
yield