我正在做一個簡單的程序,它假設接受來自客戶端的txt文件數據。 (不是很大的文件..)是否可以在套接字連接中創建線程而不是在服務器中分派進程?
我想知道,如果可以使用pthread創建線程而不是使用fork創建另一個進程。
我的計劃是爲每個連接創建線程,以處理數據並將其存儲在共享隊列中,我可以使用互斥鎖或信號量來保護任何競爭條件。
我正在做一個簡單的程序,它假設接受來自客戶端的txt文件數據。 (不是很大的文件..)是否可以在套接字連接中創建線程而不是在服務器中分派進程?
我想知道,如果可以使用pthread創建線程而不是使用fork創建另一個進程。
我的計劃是爲每個連接創建線程,以處理數據並將其存儲在共享隊列中,我可以使用互斥鎖或信號量來保護任何競爭條件。
是的,使用單獨的線程來處理客戶端連接是完全正確的。與分叉新工藝相比,這將更快。儘管在隔離方面存在一個缺點:因爲如果此過程停止,所有客戶端都在相同的進程中處理,服務器將無法爲其他客戶端提供服務。
只要你記住線程的侷限性就沒問題。特別是,你將需要適當的鎖定,並且你將有相對較小的堆棧來處理。
您可能還想考慮使用例如libevent的事件驅動架構;這可以避免鎖定和堆棧大小問題,並減少上下文切換開銷,但可能導致更復雜的代碼。
是的,我認爲最大連接數不會超過10個,所以沒關係。 – user482594