一、队列queue
队列queue 多应用在多线程场景,多线程访问共享变量。
对于多线程而言,访问共享变量时,队列queue的线程安全的。
因为queue使用了一个线程锁(pthread.Lock()),以及三个条件变量(pthread.condition()),来保证了线程安全。
总结:队列提供了一个安全可靠的共享数据使用方案。队列内置控制安全的几个参数,非用户使用名称作用
self.mutex互斥锁任何获取队列的状态(empty(),qsize()等),或者修改队列的内容的操作(get,put等)都必须持有该互斥锁。共有两种操作require获取锁,release释放锁。同时该互斥锁被三个共享变量同时享有,即操作conditiond时的require和release操作也就是操作了该互斥锁。
self.not_full条件变量
队列没满当队列中有元素添加后,会通知notify其他等待添加元素的线程,唤醒等待require互斥锁,或者有线程从队列中取出一个元素后,通知其它线程唤醒以等待require互斥锁。
self.not_empty条件变量
队列不为空线程添加数据到队列中后,会调用self.not_empty.notify()通知其它线程,唤醒等待require互斥锁后,读取队列。
self.all_tasks_done条件变量
队列数据全部处理完消费者线程从队列中get到任务后,任务处理完成,当所有的队列中的任务处理完成后,会使调用queue.join()的线程返回,表示队列中任务以处理完毕。###queue的初始化函数###
def __init__(self, maxsize=0):