比如通过一个QQ来实现聊天功能。那QQ程序怎么启动起来呢,操作系统把QQ程序丢在一个容器里并把它执行起来,而这个容器就是进程。那进程跟程序之间又是什么关系呢?
维基百科:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
一个进程有多个线程,拿QQ为例子,需要有一个线程监听键盘的输入并转换为文字,需要有一个线程负责拉取对方发来的消息等。从操作系统的角度来看:
无论是进程还是线程都是需要操作系统来控制的。拿线程来举例,线程有多个执行状态:初始化、可运行、运行中、阻塞、销毁 五种状态。这五种状态的转化关系如下:
线程的状态转化是由操作系统内核中的TCB(thread control block)线程控制块来改变的,需要耗费一定的CPU资源。
协程,又称微线程,纤程。英文名Coroutine。比线程更加轻量级,就像一个进程有多个线程一样,一个线程可以有多个协程。
同一时间里,同一计算机系统中如果允许两个或两个以上的进程处于允许状态,这就是多进程。
线程就是把一个进程分为很多片,每一片都可以是一个独立的流程与多进程的区别是只会使用一个进程的资源,线程间可以直接通信。
进程、线程、协程
1.1 先有进程,然后进程可以创建线程,线程是依附在进程里面的, 线程里面可以包含多个协程
1.2 进程之间不共享全局变量,线程之间共享全局变量,但是要注意资源竞争的问题
1.3 多进程开发比单进程多线程开发稳定性要强,但是多进程开发比多线程开发资源开销要大
1.4 多线程开发线程之间执行是无序的,协程之间执行按照一定顺序交替执行
1.5 协程以后主要用在网络爬虫和网络请求,开辟一个协程大概需要5k空间,开辟一个线程需要512k空间, 开辟一个进程占用资源最多
本文发布于:2024-01-28 17:39:15,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064347599115.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |