簡體   English   中英

多線程Web服務器的線程池

[英]Thread Pool for Multi-Threaded Webserver

我想編寫一個多線程的Web服務器,並且應該使用線程池。 我可以將隊列用於線程池嗎?如果可以,您是否建議該隊列為循環隊列或說雙鏈表? 哪種服務器更適合我的Web服務器實施? 如果隊列不是一個好的選擇,那么建議線程池使用哪種數據結構?

您可以使用任何線程安全的隊列。 但是,如果該Web服務器將要承受繁重的工作,則最好使用基於數組的無鎖隊列,這樣您有時只需要分配數組即可((michael和scott的隊列是基於節點的,所以在幼稚的實現,您必須在每次入隊時分配節點,並在出隊時釋放它們。 (因此,我認為基於數組的隊列(而非雙端隊列)更好,因為它們在不同任務之間是公平的。)

我建議您使用隊列,而不是雙端隊列。 (盡管竊取工作使用雙端隊列,但您希望成為公平的出席客戶。因此,雙端隊列由於ot的行為類似於堆棧,因此第一個請求將是最后一個響應。)您可以在此頁面查看無鎖並發隊列(此頁面我認為是最先進的技術) http://mcg.cs.tau.ac.il/projects/lcrq/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM