C++ 在我的c+中可以使用多少线程+;应用

C++ 在我的c+中可以使用多少线程+;应用,c++,multithreading,visual-c++,cpu,core,C++,Multithreading,Visual C++,Cpu,Core,所以我的教授曾经告诉我,在大学里,不要在你的程序中使用比你的电脑实际使用的线程更多的线程 我很困惑,如果你看看我的系统资源分配,我目前使用的是4811个线程,即 我只有16个线程的处理器 所以我的问题是,我的C++程序能显著地超过我的计算机物理上的线程数吗? 此外,当你超过了你的计算机的线程数时,操作系统会正确地排队?< /P>这是所有的执行线程,而不是你现在正在运行的C++应用程序。仅仅因为存在一个执行线程,并不意味着它实际上正在运行,并且需要一个实际的CPU线程的关注。您可以创建一百万个线

所以我的教授曾经告诉我,在大学里,不要在你的程序中使用比你的电脑实际使用的线程更多的线程

我很困惑,如果你看看我的系统资源分配,我目前使用的是4811个线程,即

我只有16个线程的处理器

所以我的问题是,我的C++程序能显著地超过我的计算机物理上的线程数吗?

此外,当你超过了你的计算机的线程数时,操作系统会正确地排队?< /P>这是所有的执行线程,而不是你现在正在运行的C++应用程序。仅仅因为存在一个执行线程,并不意味着它实际上正在运行,并且需要一个实际的CPU线程的关注。您可以创建一百万个线程(假定内存充足),如果所有线程都在等待I/O事件,那么实际的16个CPU线程中就没有一个可以做任何事情。您可以分配线程,直到系统资源耗尽为止。但是超过可用内核的活动线程越多,在线程之间来回切换所浪费的时间就越多。如果有很多线程一直处于活动状态,那么最好将其中的一些线程聚合起来,或者限制工作负载,以减少线程数量。看看有没有一种方法可以做到这一点。无关:看一看,比任务管理器介绍的更详细地了解正在发生的事情。你的教授是对的,也是错的。或者是泛泛而谈。大型程序有几十个甚至数百个线程并不少见。只是大多数线程在等待I/O或某些事件发生时被阻塞。阻塞线程不使用CPU资源,但通常会占用内存,因为必须为其分配堆栈帧。