线程,进程,协程基本理解

进程:计算机程序一次执行的实例,由程序数据段PCB组成,是计算机资源分配和调度的基本单位,也是线程的容器。

线程:线程也叫轻量级进程,是程序执行的最小单位,本身只拥有少部分执行必须的资源。

协程:·协程也叫微线程,用户可自己控制协程切换的时机,不再需要陷入系统的内核态。线程和进程都面临着内核态和用户态的切换问题,耗费许多切换时间。

区别:

1)线程共享内存空间,进程内存独立

2)线程之间可直接通信,进程间通信必须通过中间代理

3)同一进程的线程之间可以相互控制,但进程只能控制子进程

4)线程创建很简单,但创建新进程必须对父进程进行一次克隆

5)改变主线陈会影响其他线程,但改变父进程不会影响子进程

GIL:全局解释器锁,系统中同一时间点,只能有一个线程被解释器解释,无法做到并行,无法充分利用多核资源。

python所谓的多线程就类似于单核CPU情况下的多进程编程。

如何解决GIL锁的问题:

1)更换cpython为jpython

2)使用多进程执行多线程任务

3)通过C来实现多线程

互斥锁:多线程时,保证修改的数据为有序修改,不会产生数据修改混乱。

相关推荐