2017-03-06 160 views
0

我注意到它經常出現表達式:「系統線程」。這是什麼意思?特別是,我無法想象不是-系統線程。只是,系統必須知道線程。操作系統(調度程序)切換上下文,以便他必須知道它!系統線程vs非系統線程

例如,第四頁上寫了有關係統線程: http://www.dabeaz.com/python/GIL.pdf

+0

請向我們展示您參考的文檔的示例。也許是一個鏈接? –

+0

對於遊戲引擎而言,這實際上是一個非常有趣的話題,其中自定義內存管理器和線程調度程序有時被編寫來提高性能。這是一種外在的情況,因爲遊戲設計師正在優化這些功能以實現特定的功能,而不是針對通用性能(或穩定性)進行優化。 – Aaron

回答

0

系統線程是由操作系統提供的東西。 OS內核負責調度系統線程。如果你的運行時提供了線程和調度程序之類的東西,那麼你有非系統線程。這些通常被稱爲綠色線程。有時非系統線程更高效,或者系統不提供線程。對於Python,非系統線程的示例將由greenleteventlet提供。

0

線程是操作系統的一個結構,它本身只是一個程序,讓人們可以在操作系統之上實現在另一個程序線程調度器,如果讓他們的願望(通常都不雖然推倒重來) 。相關的組件可能包括一些中斷機制,一個內存管理器(虛擬化內存分配)以及每個線程的指令指針優先級隊列。

0

綠色線程,事件循環,協作多任務處理和協同程序的概念通常是什麼非系統線程的意思。
它本質上是指結構化程序的方式,這樣的而不是阻塞一個線程做的事情一樣IO,我們允許另一個任務所使用的線程。
當我們駐留本地線程時,OS可以安排另一個線程使用該CPU。通過協作式多任務處理方法,還可以讓應用程序選擇接下來要執行的任務。

+1

我不會將「綠色」線程放在與「事件循環」相同的類別中。綠線程是_threads_:每個線程都有自己的執行上下文和自己的調用棧;每個人都可以完全不知道別人在做什麼(如果這就是你想要的)。 –

+0

夠公平的,但我會說他們至少是相關的概念。 – Magnus