2010-02-18 18 views
0

在C中,當進行網絡客戶端/服務器設置時,我通常必須執行一些標準的BSD套接字設置。然後在服務器端,我將不得不管理多個線程,通常是一個主線程,一個io線程。每個連接都由連接管理器管理,以便您可以在新請求進入時處理連接。在C中進行連接管理有哪些好方法?

在C中執行連接管理有哪些好方法?是否有知識庫來處理所有這些?我知道關於C++的Boost,但我對C和Python很感興趣。

感謝, Chenz

附:對不起,沒有這麼深思熟慮的問題。我會盡快磨合它。

回答

2

就我個人而言,我不是一個具有同步IO的單線程連接模型的狂熱粉絲。我更喜歡使用異步IO的Y連接池的X線程。您可以根據需要產生線程,或者在連接進入預分配池時輪詢循環連接。

如果你想要真的很棘手,用生命週期管理產生線程,新的連接到新的產生的線程,以便舊的線程可以關閉。這樣一來,如果一個線程持有一個資源,當它被清理時,資源將被釋放。

你可能想看看select,poll,epoll,完成池和AIO。

其中大部分包裹在libevent

+0

我知道單線程每連接是壞的。我的IO線程將處理所有的IO。儘管如此,我確實喜歡你的一生。選擇,輪詢和epoll似乎總是會增加我想在維護的庫中處理的代碼的複雜性。 – 2010-02-18 13:05:46

相關問題