大家好,今天分享一下线程,进程,多线程
先了解一下程序的概念:
程序是指令和数据的有序结合
它本身没有运行的意义,是一个静态的概念。
进程:执行程序的一次执行过程,它是一个动态的概念,是系统分配资源的单位
也可以换一句话来解释,进程就是正在运行的程序(比如:qq音乐,或者一个软件)
举个进程的实际案例:
打开Windows 命令行窗口:
ping -t www.baidu.com //一直ping 百度域名
其实,在这个 ping包的过程,就是一个进程
通常在可以有若干个线程,一个进程当中至少有一个线程,否则的话,没有存在的意义
线程是cpu 调度和执行的单位
很多多线程是虚拟出来的,真正的多线程是指有多个cpu ,就是多核,比如服务器,如果
是虚拟出来的多线程,即在一个cpu的情况下,在同一个时间点,cpu只可以执行一个代
码,因为切换的很快,所以就有同时执行的错觉
实例:
一个进程当中可以多个线程
比如说,你在看视频的时候,可以同时听声音,看图像
在这个例子当中,正在播放的视频就是进程,声音与图像这些就是线程
总之:
1.线程就是独立的执行路径
2. 在程序运行时,即使自己没有建立线程,后台也有很多个线程,如主线程,gc 线程
3. main()是主线程,是系统的入口,用于执行整个程序
-
在一个进程当中,如果开了多个线程,线程的运行有调度器来安排,
调度器与操作系统是息息相关的,它的前后顺序是不可以人为的干预的 -
对同一资源的资源操作的时候,会存在资源抢占的资源的问题,需要加入并发控制
-
线程会带来额外的开销,例如,cpu调度时间,并发控制开销
-
每一个线程在自己工作的内存交互,内存控制不当会造成数据不一致
好了,线程,进程,多线程就到这里了,谢谢大家