相关概念:
(1)进程:一个运行起来的可执行程序就叫做一个进程。在windows下运行一个.exe程序就是创建了一个进程,在linux下ls -l 后文件权限带有x的文件就是一个可执行程序。
(2)线程:实际上也就是执行代码的一条通路,一条道路。线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。每一个线程都需要一个线程执行入口函数,例如主线程执行开始函数是main()函数。
(3)并发:两个或者更多的任务(独立的活动)同时进行,一个程序同时执行多个独立的任务就是并发。
(4)并发深入探讨:
早期的计算机,CPU只有单核,某一个时刻只能同时处理一个任务,由操作系统调度,每秒钟进行多次所谓的“任务切换”,这是并发的假象,不是真的并发,这种切换叫做“上下文切换”是有时间开销的,比如操作
系统要保存你切换时的各种状态,各种信息,执行进度等,都要时间,然后在切换回来时还要复原这些信息。现在的计算机出现了多核cpu,能够实现真正的并发,真正的并行执行多个任务。
(5)线程深入探讨:
每个进程都有一个主线程,并且主线程是唯一的,只能有一个,这个主线程是随着进程启动而默默启动的。
实际上运行一个单线程程序的时候是运行进程中的主线程,在主线程中运行代码主线程的寿命是跟随着进程一起运行和结束的。每一个线程都有唯一的线程id。
每创建一个新线程,就可以在同一时刻多干一件事。多线程(并发),线程并不是越多越好,每个线程都需要一个独立的堆栈空间,都需要内存,线程之间的切换也需要保存状态,需要消耗时间。
多线程程序可以同时干多个事情,所以运行效率高,但是到底有多高,并不是一个很容易评估和量化的东西,所以需要在实际编程中进行调整和优化
(6)并发的实现方法:
1)多进程并发:通过创建多个进程来实现并发。
缺点:进程之间通信问题,系统开销资源大,消耗内存大,启动速度较线程慢。
2)多线程并发:通过在一个进程中创建多个线程来实现并发。
优点:线程启动速度更快,更轻量级,系统资源开销少,执行速度更快,还有共享内存这种通信方式更快。实际编程中,大多数都是多线程并发的操作。
缺点:使用有难度,要小心处理数据的一致性,有临界数据问题,数据脏问题。
以上是多线程并发的相关概念
Comments 1 条评论
博主 北林
能感受到这位富含学识的理工男别具一格的独特审美(我超喜欢你的风格)和风趣幽默的个性