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

Process 为特定进程创建多个线程以增加执行该进程的机会是否有用?,process,operating-system,Process,Operating System,这是我今天遇到的一个面试问题。我对操作系统有一些了解,但不是很精通。我想每个进程可以创建的线程可能有限? 任何想法都会有帮助 可以并行运行的线程数取决于计算机上的CPU数 这还取决于您正在运行的进程的特性,如果它们正在消耗CPU—运行的线程数不能超过您机器上的CPU数,另一方面,如果它们执行大量I/O或任何其他类型的阻塞任务—增加线程数是有意义的 至于“多少”这个问题,你必须调整你的应用程序,进行测量,并根据实际数据做出决定 可以并行运行的线程数取决于计算机上的CPU数 这还取决于您正在运行

这是我今天遇到的一个面试问题。我对操作系统有一些了解,但不是很精通。我想每个进程可以创建的线程可能有限? 任何想法都会有帮助

  • 可以并行运行的线程数取决于计算机上的CPU数

  • 这还取决于您正在运行的进程的特性,如果它们正在消耗CPU—运行的线程数不能超过您机器上的CPU数,另一方面,如果它们执行大量I/O或任何其他类型的阻塞任务—增加线程数是有意义的

  • 至于“多少”这个问题,你必须调整你的应用程序,进行测量,并根据实际数据做出决定

      • 可以并行运行的线程数取决于计算机上的CPU数

      • 这还取决于您正在运行的进程的特性,如果它们正在消耗CPU—运行的线程数不能超过您机器上的CPU数,另一方面,如果它们执行大量I/O或任何其他类型的阻塞任务—增加线程数是有意义的

      • 至于“多少”这个问题,你必须调整你的应用程序,进行测量,并根据实际数据做出决定


        • 简短回答:取决于操作系统

          我认为这取决于操作系统调度器是如何实现的。 从我个人的爱好操作系统的经验来看,它肯定会发生

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

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

          当然有各种各样的方法。检查


          每个进程和每个线程的优先级都取决于操作系统。

          简短回答:取决于操作系统

          我认为这取决于操作系统调度器是如何实现的。 从我个人的爱好操作系统的经验来看,它肯定会发生

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

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

          当然有各种各样的方法。检查


          加入每个进程和每个线程的优先级,这实际上取决于操作系统。

          这个问题[至少]可以通过两种方式查看:

        • 通过创建许多需要调度的线程,您的进程能否获得更多的CPU时间
        • 通过创建线程以允许在另一个线程被阻塞时继续处理,您的进程能否获得更多的CPU时间
        • #1的答案在很大程度上取决于系统。然而,任何合理设计的系统都将再次保护尝试这种方法的流氓进程。一般来说,这里的答案是否定的。事实上,一些较旧的系统只安排进程;不是线程。在这些情况下,答案总是否定的


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

          此问题[至少]可以通过两种方式查看:

        • 通过创建许多需要调度的线程,您的进程能否获得更多的CPU时间
        • 通过创建线程以允许在另一个线程被阻塞时继续处理,您的进程能否获得更多的CPU时间
        • #1的答案在很大程度上取决于系统。然而,任何合理设计的系统都将再次保护尝试这种方法的流氓进程。一般来说,这里的答案是否定的。事实上,一些较旧的系统只安排进程;不是线程。在这些情况下,答案总是否定的


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

          首先感谢您!我明白了。而且,如果进程A有100个线程,而进程B只有10个线程,并且操作系统计划线程执行而不是进程,那么我可以说进程A比进程B有优势吗?@FredXue如果这个答案解决了您的问题,请继续并通过单击勾号接受答案sign@FredXue不一定:操作系统会安排每个进程的CPU时间,每个进程管理自己线程的调度。通过创建大量线程(比如100个,就像你的例子中那样),你可能会自食其果,因为这个过程将浪费大量CPU周期在线程之间切换上下文,而不是做任何实际工作。首先感谢你!我明白了。而且,如果进程A有100个线程,而进程B只有10个线程,并且操作系统计划线程执行而不是进程,那么我可以说进程A比进程B有优势吗?@FredXue如果这个答案解决了您的问题,请继续并通过单击勾号接受答案sign@FredXue不一定:操作系统会安排每个进程的CPU时间,每个进程管理自己线程的调度。通过创建大量线程(比如100个,就像你的例子中那样),你可能会自食其果,因为这个过程会浪费很多CPU周期在线程之间切换上下文,而不是做任何实际的工作。