操作系统是否有优势了解如何使用线程的特性?

时间:2009-04-10 20:24:52

标签: multithreading scheduling kernel bsd

操作系统是否有优势了解如何使用线程的特性?例如,如果Java中有一种方法在创建新线程时指示它将用于密集型CPU计算,那么将阻止I / O.如果这是一种能力,线程调度是否会改善?

4 个答案:

答案 0 :(得分:3)

这就是操作系统流程的功能。操作系统具有复杂的流程调度。操作系统跟踪I / O使用和CPU使用情况,并动态调整优先级,以便CPU密集型处理不会干扰I / O.

如果您需要这些功能,请使用正确的操作系统过程。

答案 1 :(得分:3)

我不确定你实际上期望操作系统处理线程是I / O或计算的信息。实际上对线程如何调度(即线程优先级和线程CPU亲和性)产生最大影响的事情已经被API暴露(对NUMA方面的支持也开始出现在主流OS API中)。

如果通过“计算线程”表示它正在进行后台处理并且不如GUI线程那么重要(从维护应用程序响应的角度来看),你可以做的最有用的事情是降低计算的优先级线程一点。

答案 2 :(得分:1)

这甚至是必要的吗? I / O上的线程阻塞将导致CPU密集型线程运行。操作系统决定如何调度线程。 AFAIK没有办法用Java提供任何提示。

答案 3 :(得分:1)

是的,如果你是喜欢打开大量线程的建筑师之一,特别是在Windows上,那么特别了解它们非常重要。

杰弗里希特在Wintellect上有一个名为PowerThreading的图书馆。如果你在.NET上开发应用程序是非常有用的,但是既然你在谈论JAVA,那么理解操作系统线程,内核模型以及中断如何工作仍然会更好。