#encoding='utf-8'
import queue
import threading
class ConcurrentQueue:
def __init__(self, capacity = -1):
self.__capacity = capacity #初始化队列大小
self.__mutex = threading.Lock() #初始化互斥量
self.__cond = threading.Condition(self.__mutex) #初始化条件变量
self.__queue = queue.Queue() #初始化队列
def get(self):
if self.__cond.acquire(): #获取互斥锁和条件变量,python中threading条件变量默认包含互斥量,因此只需要获取条件变量即可
while self.__queue.empty():
self.__cond.wait() #条件变量等待
elem = self.__queue.get()
self.__cond.notify()
self.__cond.release()
return elem
def put(self,elem):
if self.