2009-04-10 23 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线程,内核模型以及中断的工作方式会更好。

相关问题