查看cpu核数:
#include <iostream>
#include <thread>
int main()
{
std::cout << "我家电脑cpu共计:"
//逻辑处理器
<< std::thread::hardware_concurrency()
<< "核"
<< std::endl;
return 0;
}
三类场景,提倡使用并发设计:
(1)并发应用典型场景一:程序在等待外部输入,比如接受网络发来的消息,或者更直接一些,在等待用户的键盘输入,可是那个用户突然上厕所了。在这种情况下,如果程序还有不需要依赖这些输入的工作,当然应该再开一个线程处理;
(2)并发应用典型场景二:电脑确实有多个CPU(包括多核),而程序当前又确实有两件完全不相关或仅是低关联度的工作需要做,那总不能就让一个CPU忙得半死,另一个在喝茶侃大山吧?
(3)并发应用典型场景三:程序用户想做多事,并且觉得每件事优先级都很高,都不能搁置,于是程序用上多线程,每件事都干一点就切换到另一件。
类似的,这个程序必须面对多个用户(比如网站的访问者),则自然每个用户都不希望自己的请求被单线程的程序排在最后面处理。