并发、
两个或者更多的任务(独立的活动)同时发生(进行);一个程序同时执行多个独立的任务//以往计算机,单核cpu,某一个时刻只能执行一个任务;由操作系统调度,每秒钟进行多次所谓的“任务切换”。//并发的假象(不是真正的并发);这种切换(上下文切换)是要有时间开销的,比如操作系统要保存你切换时的各种状态,执行进度等信息,都需要时间,一会切换回来的时候要复原。
//硬件发展,出现了多处理器计算机:用于服务器和高性能计算机领域
//能够实现真正的并行执行多个任务(硬件并发)
//使用并发的原因:主要是铜是可以干多个事,提高性能,效率。
可执行程序、
//磁盘上的一个文件,windows下,一个扩展名位.exe的;linux,ls -la,rwxrwxrwx(x执行权限);
进程、
//windows下,双击一个可执行程序来运行; linux下./文件名 ./a;
//进程,讲就是一个可执行程序运行起来了,就叫创建了一个进程。
线程、
//每个进程(执行起来的可执行程序),都有一个主线程;这个主线程事唯一的,也就是一个进程中只能有个一个主线程。
//当执行一个可执行程序,产生一个进程后,这个主线程就随着这个进程默默的启动起来了;
//时间运行这个程序的时候,实际上事进程的主线程来执行(调用)这个main函数中的代码;
//主线程于进程相伴。
//线程:用来执行代码。
//线程这个东西理解成执行代码的一个通路;
//除了主线程之外,我们通过自己写代码来创建线程,其他线程走的事别的道路,甚至去不同的地方。
//每创建一个线程,我就可以在同一时刻,多干一个不同的事(多走一条不同的代码执行路径);
//多线程(并发)
//线程并不是越多越好,每个线程,都修要一个独立的堆栈空间(1M),线程之间的切换要保存很多中间状态;
//切换会耗费本该属于程序运行的时间;
总结线程:
1、线程是用来执行代码的;
2、把线程这个东西理解成一条代码的执行通路(道路),一个新线程代表一条新的通路。
3、一个进程自动包含一个主线程,主线程随着进程默默的启动并运行,我们可以通过编码来创建多个其他线程(非主线程),但是创建的数量最大不建议超过300个,至于到底多少个何是,大家在实际的项目中可以不断调整优化
4、因为主线程是自动启动的,所以一个进程中最少也有是有一个主线程。
5、需要在实际变成,实际项目中进行体会和调整优化。
学习心得:
1、开发多线程序:实力的体现,商用的必须需求;
2、线程开发有一定难度。实现代码更复杂。理解上更难一些, 需要一定的学习时间。
3、网络通讯,网络服务器,必须得学会多线程。
总结:
1、线程启动速度更快。
2、开销小、