我创建了一个C ++应用程序。可以同时运行多少个线程?
答案 0 :(得分:3)
基本上,您的操作系统可以处理或多或少无限多个线程。这只是保留上下文/调度请求列表的问题。
现在,同时对你来说意味着不同的东西 - 如果你的意思是“在完全相同的时间运行”,你当然不能拥有比CPU中的内核更多的并行执行。但从更广泛的意义上讲,“轮流被执行以便在一个线程被阻止时,例如等待文件I / O,其他人可以工作”,这是没有限制的。
有用性有限 - 存在处理开销,切换线程导致频繁的缓存失效,但没有硬性限制。
答案 1 :(得分:1)
有一个名为std::thread的hardware_concurrency()成员函数,返回硬件线程上下文数量的估计值:
#include <iostream>
#include <thread>
int main(){
std::cout << std::thread::hardware_concurrency() << std::endl;
return 0;
}