2

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

4

4 回答 4

3

这就是操作系统进程所做的。操作系统对进程有复杂的调度。操作系统跟踪 I/O 使用和 CPU 使用并动态调整优先级,以便 CPU 密集型处理不会干扰 I/O。

如果您想要这些功能,请使用适当的操作系统进程。

于 2009-04-10T20:31:42.807 回答
3

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

如果通过“计算线程”你的意思是它是在做后台处理并且不如 GUI 线程重要(从维护应用程序响应性的角度来看),你可以做的最有用的事情可能是稍微降低计算线程的优先级.

于 2009-04-10T21:09:49.940 回答
1

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

于 2009-04-10T20:32:06.427 回答
1

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

Wintellect 的 Jeff Richter 有一个名为PowerThreading的库。如果您在 .NET 上开发应用程序,这非常有用,但由于您在谈论 JAVA,因此最好了解操作系统线程、内核模型以及中断的工作原理。

于 2009-04-10T21:13:47.917 回答