2009-04-10 24 views
2

操作系統有理解線程可以如何使用的特性的優點嗎?例如,如果創建一個新線程以表明它將用於密集型CPU計算,並且將阻塞I/O,那麼Java中是否有一種方法。如果這是一種能力,線程調度不會改進嗎?操作系統是否具有理解線程可以如何使用的特性的優點?

+0

應用程序對操作系統線程調度程序具有進一步「影響」的能力感覺像是一個好主意。也許問題是如果這種能力存在,那麼應用程序想要利用的線程優先級以外的特性是什麼? – McGovernTheory 2009-04-17 13:12:21

回答

3

我不確定你實際上期望操作系統如何處理線程是I/O或計算的信息。實際上線程如何調度的最重要的事情(即線程優先級和線程CPU關聯度)已經被API公開(並且支持NUMA方面也開始出現在主流OS API中)。

如果用「計算線程」表示它是做後臺處理的東西,比GUI線程不重要(從維護應用程序響應的角度來看),可能最有用的做法是降低計算一些線程。

3

這就是操作系統進程的功能。操作系統具有複雜的進程調度。操作系統跟蹤I/O使用情況和CPU使用情況,並動態調整優先級,以便CPU密集型處理不會干擾I/O。

如果您需要這些功能,請使用適當的OS進程。

1

這是必要的嗎?在I/O上阻塞的線程將導致CPU密集型線程運行。操作系統決定如何安排線程。 AFAIK沒有辦法給Java提供任何提示。

1

是的,如果您是喜歡打開大量線程(特別是在Windows上)的架構師,請務必特別瞭解它們。

Jeff Richter在Wintellect有一個名爲PowerThreading的庫。如果您在.NET上開發應用程序,這非常有用,但是因爲您正在談論JAVA,所以理解OS線程,內核模型以及中斷的工作方式會更好。

相關問題