文章目录
为什么用多线程来做服务器?
1)当前机器的单核红利已经结束了
linux下的
进程:process(linux for windows CreateProcess,会产生信号)
线程: thread (POSIX threads)
(涉及到数据计算和数据I/O,一般服务器的瓶颈:
①数据处理有问题,处理数据太慢,没法及时发送给客户端
②算法太挫,速度太慢,即使请求响应太慢
要在数据I/O和计算找到平衡点
)
2)多线程拥有自身的优势
新时代的multithread goto , 可能的问题包括:
(1) 死锁
(2) 乱序
(3) 并发访问数据造成问题
(4) 低效率
3)C++给我们带来的新概念
(1) 高阶接口:(async , future) – 我可能并发地做了某些事情,但是不是用了多线程,不告诉你,你也不用关心,你只知道两件事情可以一块去做
(2) 低阶接口:(thread , mutex) – 偏向于机器,偏向于CPU这样的接口就是thread,跟操作系统的语法较为接近,就是显式地开了thread去做某些事情
4)开启一个线程做事举例
编译:
make
g++ -std=c++11 -02 -o LearnThread LearnThread.cpp -lpthread
void helloworld()
{
std::cout<<"hello world\n";
}
int main()
{
//开启一个线程
std::thread t(helloWorld);
//终结线程,等待子线程工作做完
//但是可能先执行t.join()后再打印std:;thread的打印
t.join();
}