diff options
author | Guido van Rossum <guido@python.org> | 2000-11-13 17:11:45 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2000-11-13 17:11:45 (GMT) |
commit | 56baca328f7c018c4ae776dd87f44a145f502773 (patch) | |
tree | aa5418fee3c046353db47491d1746a523402fa2e /Lib/dos-8x3/queue.py | |
parent | f6fc875831d0cfbf4077b4d2e1800365a78f7c2e (diff) | |
download | cpython-56baca328f7c018c4ae776dd87f44a145f502773.zip cpython-56baca328f7c018c4ae776dd87f44a145f502773.tar.gz cpython-56baca328f7c018c4ae776dd87f44a145f502773.tar.bz2 |
Removing DOS 8x3 support
Diffstat (limited to 'Lib/dos-8x3/queue.py')
-rwxr-xr-x | Lib/dos-8x3/queue.py | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/Lib/dos-8x3/queue.py b/Lib/dos-8x3/queue.py deleted file mode 100755 index 9d5f799..0000000 --- a/Lib/dos-8x3/queue.py +++ /dev/null @@ -1,138 +0,0 @@ -"""A multi-producer, multi-consumer queue.""" - -# define this exception to be compatible with Python 1.5's class -# exceptions, but also when -X option is used. -try: - class Empty(Exception): - pass - class Full(Exception): - pass -except TypeError: - # string based exceptions - # exception raised by get(block=0)/get_nowait() - Empty = 'Queue.Empty' - # exception raised by put(block=0)/put_nowait() - Full = 'Queue.Full' - -class Queue: - def __init__(self, maxsize=0): - """Initialize a queue object with a given maximum size. - - If maxsize is <= 0, the queue size is infinite. - """ - import thread - self._init(maxsize) - self.mutex = thread.allocate_lock() - self.esema = thread.allocate_lock() - self.esema.acquire() - self.fsema = thread.allocate_lock() - - def qsize(self): - """Return the approximate size of the queue (not reliable!).""" - self.mutex.acquire() - n = self._qsize() - self.mutex.release() - return n - - def empty(self): - """Return 1 if the queue is empty, 0 otherwise (not reliable!).""" - self.mutex.acquire() - n = self._empty() - self.mutex.release() - return n - - def full(self): - """Return 1 if the queue is full, 0 otherwise (not reliable!).""" - self.mutex.acquire() - n = self._full() - self.mutex.release() - return n - - def put(self, item, block=1): - """Put an item into the queue. - - If optional arg 'block' is 1 (the default), block if - necessary until a free slot is available. Otherwise (block - is 0), put an item on the queue if a free slot is immediately - available, else raise the Full exception. - """ - if block: - self.fsema.acquire() - elif not self.fsema.acquire(0): - raise Full - self.mutex.acquire() - was_empty = self._empty() - self._put(item) - if was_empty: - self.esema.release() - if not self._full(): - self.fsema.release() - self.mutex.release() - - def put_nowait(self, item): - """Put an item into the queue without blocking. - - Only enqueue the item if a free slot is immediately available. - Otherwise raise the Full exception. - """ - return self.put(item, 0) - - def get(self, block=1): - """Remove and return an item from the queue. - - If optional arg 'block' is 1 (the default), block if - necessary until an item is available. Otherwise (block is 0), - return an item if one is immediately available, else raise the - Empty exception. - """ - if block: - self.esema.acquire() - elif not self.esema.acquire(0): - raise Empty - self.mutex.acquire() - was_full = self._full() - item = self._get() - if was_full: - self.fsema.release() - if not self._empty(): - self.esema.release() - self.mutex.release() - return item - - def get_nowait(self): - """Remove and return an item from the queue without blocking. - - Only get an item if one is immediately available. Otherwise - raise the Empty exception. - """ - return self.get(0) - - # Override these methods to implement other queue organizations - # (e.g. stack or priority queue). - # These will only be called with appropriate locks held - - # Initialize the queue representation - def _init(self, maxsize): - self.maxsize = maxsize - self.queue = [] - - def _qsize(self): - return len(self.queue) - - # Check whether the queue is empty - def _empty(self): - return not self.queue - - # Check whether the queue is full - def _full(self): - return self.maxsize > 0 and len(self.queue) == self.maxsize - - # Put a new item in the queue - def _put(self, item): - self.queue.append(item) - - # Get an item from the queue - def _get(self): - item = self.queue[0] - del self.queue[0] - return item |