我想了解一些使用多線程的高性能服務器程序的問題。Linux下的TCP/UDP高性能服務器
epoll的可以處理TCP套接字監聽和插座連接,我可以在主線程中使用epoll_wait,如果有任何套接字連接正在添加,程序可以接受的工作線程的連接和recv數據。工作線程之間沒有衝突。我對嗎?
udp是一個無連接的協議,我們可以同時在所有工作線程中使用recvfrom函數嗎?主線程只是使用epoll通知工作線程接收數據。 (假設我可以單獨處理每個UDP數據包)。
這是一個UDP服務器。 我將它設置爲無阻塞套接字。我在主線程中接收數據並處理它,然後將它發送到任務隊列,如果任務隊列有數據,則程序喚醒工作線程並鎖定任務隊列,然後從任務隊列獲取數據,解鎖任務使其他工作線程可以從任務隊列中獲取任務,然後進行處理。
這是一個很好的多線程UDP服務器嗎?我不確定。 有UDP服務器的另一設計與高性能。
我在這個問題困擾,非常感謝你!
越高越好 –