開發并發網絡軟件的C++框架: HPServer
開源的C++并發網絡編程框架。可以當做一個入門級的網絡編程框架閱讀。
雖然主頁上介紹"HPServer is a free, open-source light-weighted framework for concurrent networking software. ",但是實際上hpserver完成事情是相當有限的。 類似于libevent,沒有管理線程,內部也沒有異步隊列的實現。所以基本上可以認為就是一個libevent的簡單實現。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; // 這里所謂的支持多線程猜想意思應該就是允許我們開辟多個reactor對象在多個線程里面使用
hpserver的類設計感覺有點麻煩,而且在信號處理方面類設計并不優雅。hpserver引入很多概念,了解這些概念倒是非常有幫助。 hpserver設計的時候將 event handler,event item,handle(fd或者是信號編號)分開了,但是閱讀代碼就會發現這些東西都是1:1:1進行綁定的。對于IO來說還可以接受,但是對于信號處理就非常悲劇了, 因為對于每一種信號必須產生一個EventHandler實例。不過還好我們關注的信號還是比較有限的,所以開辟的EventHandler還不算太多。這個從samples/signal-handler.cpp就可以看出來。