管程、协程

  • 管程:信号量机制的引入解决了进程同步的描述问题,但信号量的大量同步操作分散在各个进程中不便于管理,还有可能导致系统死锁。所以把所有进程对某一种临界资源的同步操作都集中起来,这里简记为A(对所有进程对另一种临界资源的同步操作都集中起来记作B)。管程相当于围墙,它把共享变量和对它操作的若干个过程(A,B等等)围了起来,所有的进程要访问临界资源时,都必须经过管程才能进入,而管程每次只允许一个进程进入管程,从而实现了进程的互斥。
  • 协程:协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其它地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文切换非常快。

总结:

  1. 一个线程可以拥有多个协程,一个进程也可以单独拥有多个协程,这样python中则能使用多核CPU。
  2. 线程进程都是同步机制,而协程则是异步。

猜你喜欢

转载自blog.csdn.net/weixin_41539756/article/details/95305926