您好我正在使用TCP在C語言的Linux上編寫服務器。 服務器必須處理多個連接(最多約5000個)。 5000是最大的,但平均值應該是500 - 1000. 我想知道什麼是最好用於處理客戶端連接和聆聽。如果最好爲每個客戶端使用一個線程或使用select()
函數。在Linux服務器上處理多個客戶端連接的正確方法是什麼
1)線程 - 每個客戶端都有自己的線程。該線程正在偵聽客戶端的請求並對其進行處理。
選擇功能 - 一個循環與選擇,其中所有請求正在處理。 (類似於這個http://www.binarytides.com/multiple-socket-connections-fdset-select-linux/)
如果我會使用線程,它將需要大量的內存和CPU性能。因此,我更喜歡使用select,但我不確定select是否可以處理如此多的連接,以及是否不會減慢來自服務器的響應(有必須通過客戶端套接字的循環)。所以可以爲許多客戶使用select?
我一直在尋找我的答案,但是,我沒有找到它,或者我只是不知道要搜索什麼。所以請不要不高興。對不起我的英語不好。
真的非常感謝您的回答。這很有幫助:)我不知道epoll。我打算使用epoll。 – Pauli 2014-11-22 16:50:13
您是否考慮過使用'libev'? – 2014-11-22 16:53:18
是的,但我沒有這樣的經驗。也許以後。我不想讓它複雜化。我從來沒有編程過服務器,所以我必須先學習一些東西...... – Pauli 2014-11-22 17:10:18