进程、线程、协程的认识

1、进程

1)操作系统资源分配的基本单位。

2)进程状态:阻塞、就绪和运行。

3)每个进程都有自己独立的进程地址空间。

4)一个进程崩溃了,不影响其他进程。

5)进程创建、切换和销毁等开销大。

6)进程间通信,效率低。

 

2、线程

1)操作系统调度的基本单位。

2)线程独有的资源,主要为了线程切换时,保留TCB(Thread Control Block,线程控制块)

     2.1)线程id,线程在进程中的唯一标识。

  2.2)寄存器,如函数调用栈的指针。

  2.3)栈,如函数调用栈。

  2.4)错误返回码

  2.5)线程优先级,用于调度。

  2.6)信号屏蔽码,每个线程关心的信号可能不一样。

3)同个进程的多个线程,共享进程地址空间。

4)主线程崩溃,同个进程的其他线程也会崩溃。

5)线程创建、切换和销毁等开销小(相对进程来说),线程切换要涉及到内核态。

6)线程间通信,因为共享进程地址空间,效率高很多,特别是在通信数据量大时更明显。

 

3. 协程(coroutine)

    协程是一种轻量级的用户态线程,操作系统对协程无感知。实现的是协作式调度(非抢占式调度),即协程切换由当前协程控制,主动让出CPU(例如当前协程在等待异步网络IO时)。通常情况下,一个线程包含多个协程。

1、优点

1)协程切换的开销比线程切换小很多。原本需要线程数量越多的场景,用协程的性能优势就越明显。

  可以参考:https://blog.csdn.net/weixin_30389003/article/details/96807467?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-7-96807467.nonecase&utm_term=c++%E8%BF%9B%E7%A8%8B%20%E7%BA%BF%E7%A8%8B%E5%92%8C%E5%8D%8F%E7%A8%8B

posted @ 2020-09-13 23:02  爱简单的Paul  阅读(197)  评论(0编辑  收藏  举报