本文所剖析的tornado源碼版本為4.4.2
ioloop是tornado的關(guān)鍵,是他的最底層。
ioloop就是對(duì)I/O多路復(fù)用的封裝,它實(shí)現(xiàn)了一個(gè)單例,將這個(gè)單例保存在IOLoop._instance中
ioloop實(shí)現(xiàn)了Reactor模型,將所有要處理的I/O事件注冊(cè)到一個(gè)中心I/O多路復(fù)用器上,同時(shí)主線程/進(jìn)程阻塞在多路復(fù)用器上;一旦有I/O事件到來或是準(zhǔn)備就緒(文件描述符或socket可讀、寫),多路復(fù)用器返回并將事先注冊(cè)的相應(yīng)I/O事件分發(fā)到對(duì)應(yīng)的處理器中。
另外,ioloop還被用來集中運(yùn)行回調(diào)函數(shù)以及集中處理定時(shí)任務(wù)。
一 準(zhǔn)備知識(shí):
1 首先我們要了解Reactor模型
2 其次,我們要了解I/O多路復(fù)用,由于本文假設(shè)系統(tǒng)為L(zhǎng)inux,所以要了解epoll以及Python中的select模塊
3 IOLoop類是Configurable類的子類,而Configurable類是一個(gè)工廠類,講解在這。
二 創(chuàng)建IOLoop實(shí)例
來看IOLoop,它的父類是Configurable類,也就是說:IOLoop是一個(gè)直屬配置子類
class IOLoop(Configurable): ......
這里就要結(jié)合Configurable類進(jìn)行講解:
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式