赞楼主的框架。
事件驱动范式的框架所追求的,我想应该是极致的性能。
硬件方面的样本应该是 :
中断, DMA
软件方面的样本应该是 :
完全端口,epoll,另外 libuv,libevent之类的网络库应该也是类似的思想。
顺便回顾了一下事件驱动编程模型的相关知识:
reactor pattern
Proactor pattern
还有著名的 C10K 问题。
同一般运行在抢占式多任务的操作系统上的同步式的编程方式相比,事件驱动的程序性能可能会高,因为省去了 context switch所消耗的时间。
但是,事件驱动的编程模型复杂度较高,而且调试起来更麻烦一些。
一些比较新的语言开始重新拾起来合作式多任务的调度方式,比如:
go 语言中推出来 goroutine
lua 语言推出来 coroutine
在保证应用层相对简单性的同时,通过语言层面实现的调度,减少内核context switch的次数,从而获取比较高的运行性能。
另外:还不能发链接,导致好多编辑好的链接都删掉了,等我查一下如何发链接再重新发一遍。
|