HPServer網(wǎng)絡(luò)編程框架
開源的網(wǎng)絡(luò)編程框架??梢援?dāng)做一個入門級的網(wǎng)絡(luò)編程框架閱讀。
雖然主頁上介紹"HPServer is a free, open-source light-weighted framework for concurrent networking software. ",但是實際上hpserver完成事情是相當(dāng)有限的。 類似于libevent,沒有管理線程,內(nèi)部也沒有異步隊列的實現(xiàn)。所以基本上可以認(rèn)為就是一個libevent的簡單實現(xiàn)。hpserver的特點有下面這些:
object-oriented;
high-performance;
cross-platform, support windows & linux;
event-driven;
support I/O events, timer, and signals; // 支持IO事件,定時器和信號
support acceptor-connector pattern internally, which will faciliates your programming;
support multithread; // 這里所謂的支持多線程猜想意思應(yīng)該就是允許我們開辟多個reactor對象在多個線程里面使用
hpserver的類設(shè)計個人感覺有點麻煩,而且在信號處理方面類設(shè)計并不優(yōu)雅。hpserver引入很多概念,了解這些概念倒是非常有幫助。hpserver設(shè)計的時候?qū)?event handler,event item,handle(fd或者是信號編號)分開了,但是閱讀代碼就會發(fā)現(xiàn)這些東西都是1:1:1進(jìn)行綁定的。對于IO來說還可以接受,但是對于信號處理就非常悲劇了, 因為對于每一種信號必須產(chǎn)生一個EventHandler實例。不過還好我們關(guān)注的信號還是比較有限的,所以開辟的EventHandler還不算太多。這個從samples/signal-handler.cpp就可以看出來。
