为特定进程创建多个线程以增加此进程执行的机会是否有用?

Is it useful to create many threads for a specific process to increase the chance of this process executed?

这是我今天遇到的一道面试题。我对 OS 有一些了解,但并不真正精通。我认为每个进程可以创建的线程可能有限? 任何想法都会有所帮助。

  • 可以运行并行的线程数取决于你机器上CPU的数量

  • 这还取决于您 运行ning 进程的特性,如果它们正在消耗 CPU - 运行 比你机器上的 CPU 数量多的线程,另一方面,如果它们做了很多 I/O,或者任何其他类型的阻塞很多的任务 - 这将是有意义的增加线程数。

  • 关于"how many"这个问题,你得自己调试你的应用,测量,然后根据实际数据来决定。

简答:取决于 OS。

我想说这取决于 OS 调度程序的实现方式。 根据我的爱好 OS 的个人经验,它肯定会发生。

在我的例子中,调度程序是使用循环算法实现的,每个线程,独立于它们属于哪个进程。

因此,如果进程 A 有 1 个线程,进程 B 有 2 个线程,并且它们都忙,则进程 B 将获得 CPU 时间的 2/3。

肯定有多种方法。检查 Scheduling_(computing)

每个进程和每个线程的优先级,这实际上取决于 OS。

这个问题[至少]可以从两个方面来看:

  1. 您的进程是否可以通过创建许多需要调度的线程来获得更多 CPU 时间?

  1. 您的进程能否通过创建线程以允许在另一个线程被阻塞时继续处理来获得更多 CPU 时间?

#1 的答案很大程度上取决于系统。然而,任何设计合理的系统都会再次保护尝试这样做的流氓进程。一般来说,这里的答案是否定的。事实上,一些较旧的系统只调度进程;不是线程。在那些情况下,答案始终是否定的。

#2 的答案通常是肯定的。使用线程的原因之一是允许进程在必须等待某些外部事件时继续处理。