what?
进程和线程的概念:
进程是资源占用的最小单位
线程是内核调度执行的最小单位
进程和线程的主要区别:
进程之间是彼此独立的,由master进程通过fork()系统调用派生子进程
线程是共享内存空间的,主线程派生子线程
why?
进程和线程的优缺点:
进程:
优点:进程由于各自有独立的内存空间,所以更加稳定,子进程之间不受影响,但是主进程崩溃会导致全局,而且在python中不受GIL(全局解释器锁)限制,可以充分利用多核cpu
缺点:对于内存资源占用比较高,而且创建一个进程的代价比线程要大
线程:
优点:由于共享内存空间,所以资源占用比较小,并且创建的代价小于进程,在python中受到GIL的限制,导致只能使用一个cpu核心,所以某一时刻运行的线程只有一个
缺点:由于共享内存空间也导致了缺点,资源征用的问题(python中可以通过锁的机制限制),并且一个线程的崩溃可能导致整个进程崩溃
fork()系统调用:
是unix/linux上比较特殊的一个系统调用,用于创建子进程,其特殊之处在于其他的系统调用函数一般调用一次返回一次,fork()调用一个返回两次(父进程pid+子进程pid),且fork()调用时返回的子进程pid永远为0
where?(python中考虑)
多进程和多线程的共同目标是实现多任务
任务