我知道如何用我選擇的語言創建一個線程,並且我瞭解互斥鎖以及共享數據等的危險,但我確信O/S如何管理線程和每個線程的成本。我有一些嚴肅的問題都涉及到,並且顯示我理解的極限的最明確的方式可能是通過這些問題。線程成本
產卵線程的成本是多少?設計軟件時,是否值得擔心?創建線程的成本之一必須是它自己的堆棧指針和進程計數器,然後空間將所有工作註冊表複製到由調度程序移入或移出內核的時間,但還有其他什麼?
一個程序的堆棧可用量是否可以在進程的線程或先到先服務之間平均分配?
我可以以某種方式檢查啓動(程序)核心數的硬件。如果我在有N個內核的機器上運行,我應該將線程數保持爲N-1嗎?
是的。也許。有時。說真的,如果不知道關於什麼操作系統,什麼語言,什麼虛擬機,什麼線程庫等的更多細節,這個問題是不可能回答的。但簡短的回答是小心過早的優化。除非您遇到系統限制,否則我不會擔心它,或者剖析器讓您擔心。 – Gray 2013-02-12 20:12:10
你是如何到達* N-1 *的? – ArjunShankar 2013-02-12 20:18:31
一種理想化的世界方式,讓一個核心爲「其他任務」,或爲所有被鎖定的家庭男孩。 – Tommy 2013-02-12 20:39:12