自己造成的死锁, 无法解开
可重入锁
可重入锁的替代方法
线程同步之条件变量
con.wait()只要线程执行到了这个位置线程及堵塞目的是等待con.notify通知继续执行
类似于互斥锁, 可以上锁, 可以解锁
如果有多个wait, 当遇到notify的时候由系统决定首先执行哪一个wait继续执行
线程同步之队列
线程间通信event
一秒钟之后
线程的合并join
- join能等待
运行结果
在for循环的第一次时, 这是有两个线程到底先执行13行还是27行有系统决定, 所以可能首先打印27行也可能打印13行, 但是确定的是最后打印的两次一定是13行 , 因为sleep了1秒
用join来等待子线程执行完成(也可回收子线程的垃圾)
通过join完成的事情是主线程在等待子线程的结束, 如果子线程不结束那么主线程一直在等待
设置等待时间 , 一般不用
守护线程
threading.local()
多进程
fork创建子进程
- 运行的程序叫做进程
fork过程
- 运行fork的过程是创建一个子进程, 创建的时候会复制父进程的所有东西
多次fork
进程号
获取进程pid和父进程的pid