import threading import collections class BoundedBlockingQueue(object): def __init__(self,capacity): self.queue = collections.deque() self.numbers = 0 self.capacity = capacity self.en = threading.Semaphore(capacity) self.de = threading.Semaphore(0) def enqueue(self,element): self.numbers+= 1 self.en.acquire() self.queue.appendleft(element) self.de.release() def dequeue(self): self.numbers-= 1 self.de.acquire() numsber=self.queue.pop() self.en.release() return numsber def size(self): return self.numbers a=BoundedBlockingQueue(5) a.size() a.enqueue(5) a.enqueue(5) a.enqueue(5) a.enqueue(5) a.enqueue(5) a.dequeue() a.enqueue(5) a.dequeue() a.dequeue() a.dequeue() print(a.numbers)
leetcode 1188设计有限阻塞队列,很经典的一道多线程题
最新推荐文章于 2023-06-15 10:43:38 发布