C++并发多线程(一)
并发:两个或者更多的任务同时发生,一个程序同时执行多个独立的任务。
以往计算机 单核CPU 某一个时刻只能执行一个任务 由操作系统调度 每秒钟进行多次所谓的任务切换
并发的假象(不是真正的并发),这种切换(上下文切换)时要有时间开销的。
线程
每个进程(执行起来的可执行程序),都有一个主线程 这个主线程是唯一的 也就是一个进程中只能有一个主线程。
当你执行要给刻执行程序 ,产生了一个进程后 这个主线程就随着这个进程默默启动起来了
ctrl+f5运行这个程序的时候,实际上是进程的主线程来执行 这个main函数中的代码
主线程与进程唇齿相依
线程 用来执行代码的 一条代码的执行道路
主线程是系统创建的 其他线程走的是别的道路 甚至去不同的地方
每创建一个新线程 我就可以在同一个时刻 多干一个不同的是
多线程(并发)
线程并不是越多越好 每个线程 都需要一个独立的堆栈空间(1M) 线程间的切换要保存很多的中间状态;
切换会耗费本该属于程序运行的时间;
总结线程:
线程是用来执行代码的
把线程这个东西理解成一条代码的执行通路 一个新线程代表一条新的通路
一个进程自动包含一个主线程 主线程随着进程默默的启动并进行 我们可以通过编码来创建多个其他现场呢g
//建议创建的数量不超过200-300个,有的时候线程太多反而降低效率
//因为主线程是自动启动的 所以一个进程中最少也是有一个线程(主线程)
join():同步 用于阻塞线程,表示当前线程结束了,才可以执行后面的代码。
detach():异步 非阻塞模式,由操作系统去调用线程。