在之前的学习过程中,关于多线程服务器编程的学习内容主要在Linux上的C语言实现,例如pthread_create,等函数,如今C++11也有很多支持多线程的函数和方法(当然环境选择Linux或者Windows都是可以的),并且更加高效和灵活,学无止境,从这次开始,进入到C++11多线程服务器编程开发的学习中。
C++11提供的的多线程编程接口
高级接口:future,async
低级接口:thread,mutex
#include <vector>
#include <iostream>
#include <iomanip>
#include <thread>
#include <chrono>
#include <future>
#include <cmath>
#include <string>
#include <cstdlib>
#include <unordered_map>
#include <algorithm>
/*
at the STD namespace,thread class is a way to create Thread,in my Example,work is a thread object
work.join well block the MainThread and ask the "work" thread if over,if the "work" thread is over
the program well continue to run,otherwise,it well always block
*/
void HelloWord()
{
std::cout << "Hello Work Thread!" << std::endl;
}
int main()
{
std::thread work(HelloWord);
std::cout << "Hello Main Thread!" << std::endl;
work.join();
return 0;
}
为什么使用多线程
1.随着时代的发展,CPU单核红利已经结束,服务器开发使用多线程大势所趋。
2.多线程有着自身的优势,能有效利用多核计算机的性能。
3.实践验证理论,理论反推动实践,如今操作系统、标准库和第三方库都支持了多线程的API,使用更加方便。
4.多线程和异步I/O的关系,单线程是阻塞I/O,如果操作I/O很耗费时间,势必拖累整体速度,但是多线程不会有这种情况。
#include <vector>
#include <iostream>
#include <iomanip>
#include <thread>
#include <chrono>
#include <future>
#include <cmath>
#