关于reactor的内部机制(浅析) -- dreamingk [DateTime(2004-08-09T02:21:09Z)] TableOfContents 刚才向hd讨教了一些关于reactor的问题,受益非浅,这里把它写下来。
精髓描述
reactor内部有一个event loop, 根据事件的类型, 调用不同的事件响应函数,这些函数是事先注册的callback object.
详细
::
- 这里调用fun1,fun2是阻塞调用的,就是说只有fun1执行完才能接着下一次loop,这样如果fun1执行的时间太长,
事件就会阻塞在事件队列里面。
而实际项目中,fun1,fun2很难保证能马上返回,可能要查询数据库什么的,因此这里必须想办法,比如多线程什么的,而twisted提供了deffered对象来提供帮助。
后记体会
这里其实和UI框架中的主事件循环很象,只是各种框架的响应事件的机制不同,MFC是用映射表,Java的swing使用interface,跟twisted有些象,qt使用的是信号/信号槽机制,各有利弊吧。
这些道理其实很简单,俺只是以为twisted为每个连接开一线程呢,所以不知道为什么要用deffered。