[Python-3000-checkins] r62883 - in python/branches/py3k: Doc/library/datatypes.rst Doc/library/mutex.rst Doc/library/threading.rst Lib/mutex.py Lib/test/test_mutex.py

brett.cannon python-3000-checkins at python.org
Thu May 8 20:55:02 CEST 2008


Author: brett.cannon
Date: Thu May  8 20:55:02 2008
New Revision: 62883

Log:
Remove the mutex module.


Removed:
   python/branches/py3k/Doc/library/mutex.rst
   python/branches/py3k/Lib/mutex.py
   python/branches/py3k/Lib/test/test_mutex.py
Modified:
   python/branches/py3k/Doc/library/datatypes.rst
   python/branches/py3k/Doc/library/threading.rst

Modified: python/branches/py3k/Doc/library/datatypes.rst
==============================================================================
--- python/branches/py3k/Doc/library/datatypes.rst	(original)
+++ python/branches/py3k/Doc/library/datatypes.rst	Thu May  8 20:55:02 2008
@@ -26,7 +26,6 @@
    bisect.rst
    array.rst
    sched.rst
-   mutex.rst
    queue.rst
    weakref.rst
    types.rst

Deleted: python/branches/py3k/Doc/library/mutex.rst
==============================================================================
--- python/branches/py3k/Doc/library/mutex.rst	Thu May  8 20:55:02 2008
+++ (empty file)
@@ -1,63 +0,0 @@
-
-:mod:`mutex` --- Mutual exclusion support
-=========================================
-
-.. module:: mutex
-   :synopsis: Lock and queue for mutual exclusion.
-.. sectionauthor:: Moshe Zadka <moshez at zadka.site.co.il>
-
-
-The :mod:`mutex` module defines a class that allows mutual-exclusion via
-acquiring and releasing locks. It does not require (or imply)
-:mod:`threading` or multi-tasking, though it could be useful for those
-purposes.
-
-The :mod:`mutex` module defines the following class:
-
-
-.. class:: mutex()
-
-   Create a new (unlocked) mutex.
-
-   A mutex has two pieces of state --- a "locked" bit and a queue. When the mutex
-   is not locked, the queue is empty. Otherwise, the queue contains zero or more
-   ``(function, argument)`` pairs representing functions (or methods) waiting to
-   acquire the lock. When the mutex is unlocked while the queue is not empty, the
-   first queue entry is removed and its  ``function(argument)`` pair called,
-   implying it now has the lock.
-
-   Of course, no multi-threading is implied -- hence the funny interface for
-   :meth:`lock`, where a function is called once the lock is acquired.
-
-
-.. _mutex-objects:
-
-Mutex Objects
--------------
-
-:class:`mutex` objects have following methods:
-
-
-.. method:: mutex.test()
-
-   Check whether the mutex is locked.
-
-
-.. method:: mutex.testandset()
-
-   "Atomic" test-and-set, grab the lock if it is not set, and return ``True``,
-   otherwise, return ``False``.
-
-
-.. method:: mutex.lock(function, argument)
-
-   Execute ``function(argument)``, unless the mutex is locked. In the case it is
-   locked, place the function and argument on the queue. See :meth:`unlock` for
-   explanation of when ``function(argument)`` is executed in that case.
-
-
-.. method:: mutex.unlock()
-
-   Unlock the mutex if queue is empty, otherwise execute the first element in the
-   queue.
-

Modified: python/branches/py3k/Doc/library/threading.rst
==============================================================================
--- python/branches/py3k/Doc/library/threading.rst	(original)
+++ python/branches/py3k/Doc/library/threading.rst	Thu May  8 20:55:02 2008
@@ -8,7 +8,7 @@
 
 This module constructs higher-level threading interfaces on top of the  lower
 level :mod:`thread` module.
-See also the :mod:`mutex` and :mod:`Queue` modules.
+See also the :mod:`Queue` module.
 
 The :mod:`dummy_threading` module is provided for situations where
 :mod:`threading` cannot be used because :mod:`thread` is missing.

Deleted: python/branches/py3k/Lib/mutex.py
==============================================================================
--- python/branches/py3k/Lib/mutex.py	Thu May  8 20:55:02 2008
+++ (empty file)
@@ -1,52 +0,0 @@
-"""Mutual exclusion -- for use with module sched
-
-A mutex has two pieces of state -- a 'locked' bit and a queue.
-When the mutex is not locked, the queue is empty.
-Otherwise, the queue contains 0 or more (function, argument) pairs
-representing functions (or methods) waiting to acquire the lock.
-When the mutex is unlocked while the queue is not empty,
-the first queue entry is removed and its function(argument) pair called,
-implying it now has the lock.
-
-Of course, no multi-threading is implied -- hence the funny interface
-for lock, where a function is called once the lock is aquired.
-"""
-
-from collections import deque
-
-class mutex:
-    def __init__(self):
-        """Create a new mutex -- initially unlocked."""
-        self.locked = 0
-        self.queue = deque()
-
-    def test(self):
-        """Test the locked bit of the mutex."""
-        return self.locked
-
-    def testandset(self):
-        """Atomic test-and-set -- grab the lock if it is not set,
-        return True if it succeeded."""
-        if not self.locked:
-            self.locked = 1
-            return True
-        else:
-            return False
-
-    def lock(self, function, argument):
-        """Lock a mutex, call the function with supplied argument
-        when it is acquired.  If the mutex is already locked, place
-        function and argument in the queue."""
-        if self.testandset():
-            function(argument)
-        else:
-            self.queue.append((function, argument))
-
-    def unlock(self):
-        """Unlock a mutex.  If the queue is not empty, call the next
-        function with its argument."""
-        if self.queue:
-            function, argument = self.queue.popleft()
-            function(argument)
-        else:
-            self.locked = 0

Deleted: python/branches/py3k/Lib/test/test_mutex.py
==============================================================================
--- python/branches/py3k/Lib/test/test_mutex.py	Thu May  8 20:55:02 2008
+++ (empty file)
@@ -1,33 +0,0 @@
-import mutex
-
-import unittest
-import test.test_support
-
-class MutexTest(unittest.TestCase):
-
-    def setUp(self):
-        self.mutex = mutex.mutex()
-
-    def called_by_mutex(self, some_data):
-        self.assert_(self.mutex.test(), "mutex not held")
-        # Nested locking
-        self.mutex.lock(self.called_by_mutex2, "eggs")
-
-    def called_by_mutex2(self, some_data):
-        self.assert_(self.ready_for_2,
-                     "called_by_mutex2 called too soon")
-
-    def test_lock_and_unlock(self):
-        self.read_for_2 = False
-        self.mutex.lock(self.called_by_mutex, "spam")
-        self.ready_for_2 = True
-        # unlock both locks
-        self.mutex.unlock()
-        self.mutex.unlock()
-        self.failIf(self.mutex.test(), "mutex still held")
-
-def test_main():
-    test.test_support.run_unittest(MutexTest)
-
-if __name__ == "__main__":
-    test_main()


More information about the Python-3000-checkins mailing list