0
我已經得到了一些代碼,其中每個用戶對象,1-2秒的工作完成,然後等待60秒,然後做更多的工作。我的問題是,如果我可以說幾千個用戶,除了每個線程的堆棧的更多內存,是否還有每個用戶有一個線程(在60年代等待期間休眠)的其他缺點,而不是具有更小的數目線程服務所有用戶?少數繁忙的線程與許多大多數空閒的線程
我已經得到了一些代碼,其中每個用戶對象,1-2秒的工作完成,然後等待60秒,然後做更多的工作。我的問題是,如果我可以說幾千個用戶,除了每個線程的堆棧的更多內存,是否還有每個用戶有一個線程(在60年代等待期間休眠)的其他缺點,而不是具有更小的數目線程服務所有用戶?少數繁忙的線程與許多大多數空閒的線程
除了內存限制,你可能會遇到一些限制,如/proc/sys/kernel/threads-max
和/proc/sys/vm/max_map_count
,但否則應該沒問題。可能還有其他小的相關開銷,但爲什麼不適用於您,並且您不希望增加負載,以致耗盡機器資源。我的意思是如果你沒有問題,爲什麼要修復?
無論您採用哪種方法查看機器如何與預期的併發用戶上限一致,並確保它在意外情況下具有一定的空間,這是一個好主意。
無論開銷如何,有什麼好處?您可以使用有限的線程池,隊列和系統定時器輕鬆完成相同的任務。你不需要cond vars或者不知道怎樣喚醒這些數千個線程嗎? – Duck
實際上,我已將它編碼並在生產中使用隊列和線程池,我只是擔心q的互斥量上的爭用,並且由於某些原因,即使CPU使用率保持不變,負載也會減少,因此我只是不會根本理解.. –
這是什麼意思加載在這種情況下? – Duck