Charla de programación concurrente

Charla de programación concurrente

操作系统发展史(了解)
多道技术(了解)
进程调度(了解)
	-进程状态:就绪,执行,阻塞
进程三状态(就绪,阻塞,运行)
同步异步 阻塞非阻塞:异步+非阻塞
	-同步是任务提交了,等待执行完成
    -异步是任务提交了,不等待执行完成,我自己去干自己的事,任务完成有回调
    -阻塞:程序运行的状态阻塞(io操作)
    -非阻塞:程序一直在运行的状态
创建进程的两种方式(重点)
	-资源分配的最小单位
    -两种方式
    -windows下开进程,在main函数下
进程join方法
	-等待子进程执行完成,父进程再继续执行
进程间数据相互隔离
	-因为开启一个进程,其实本身就是拉起一个python解释器,把进程跑在里面
僵尸进程与孤儿进程
	-进程死了,还有数据每回收
    -父进程死了,子进程就是孤儿进程
进程对象及其他方法
	-进程id号,父进程id号,关闭进程,查看进程是否存活
守护进程
	-主进程结束,守护进程跟着结束
互斥锁
	-Lock
    -获得锁
    -释放锁
队列介绍
	-进程Queue
    -放值,取值
    -放满了,取没了(阻塞,报错)
IPC机制
	-进程间通信(队列机制)
GIL与普通互斥锁的区别
	-全局解释器锁,垃圾回收线程,不是数据安全的,线程必须拿到GIL锁,才能执行
    -GIL不能保证我们自己的数据安全,自己的数据安全需要自己处理锁
    -io密集型:线程
    -计算密集型:进程
多线程与多进程比较
	-进程是资源分配的最小单位
    -cpu执行(调度)的最小单位
    -每个进程里至少有一条线程
死锁现象
	-A这把锁,连续获得,第二次获得,就会夯住,形成死锁
    -A线程已经获取A锁,等待去获取B锁,但是B锁被B线程获得,B线程在等待A锁
递归锁(可重入锁)
	-同一条线程,可以重复获得这把锁,每获得一次数字加一,只有计数为0,其他线程才能获得
    -解决死锁现象的第二种:A和B是同一把锁
信号量
	-运行多条线程同时修改数据
Event事件
	-发一个信号event.set(),原来在等待的(event.wait())线程会继续执行
线程q
	-三种,先进先出,先进后出,优先级(越小)
池的概念
	-用来做缓冲,不会一次性创建出很多(进程,链接),池子多大,最多就创建多少
线程池
	-类不一样,用法完全一样
    from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
    pool=ThreadPoolExecutor(5)
    pool.submit(任务).add_done_callback(函数)
    
协程基本原理
	-单线程下实现并发,程序员制造出来的,切换+保存状态
gevent模块
协程实现tcp并发
io模型介绍
阻塞io模型
非阻塞io模型理论
io多路复用
asyncio模块
io模型

Supongo que te gusta

Origin blog.csdn.net/qq_40808228/article/details/108318947
Recomendado
Clasificación