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