File size: 383 Bytes
cdcab39 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
def get(self, block=1):
if block:
self.esema.acquire()
elif not self.esema.acquire(0):
raise Empty
self.mutex.acquire()
release_esema = True
try:
was_full = self._full()
item = self._get()
if was_full:
self.fsema.release()
release_esema = not self._empty()
finally:
if release_esema:
self.esema.release()
self.mutex.release()
return item |