python 读写锁(优化)

来源:互联网 发布:安卓项目源码 编辑:程序博客网 时间:2024/06/06 00:25

python 读写锁(优化)


# import system module

import threading


class ReadWriteLock:

    """A lock object that allows many simultaneous "read-locks",

    but only one "write-lock".


    """

   

    def __init__(self,index):

        self._read_ready = threading.Condition(threading.Lock())

        self._readers = 0

        self._index = index


    def acquire_read(self):

        """Acquire a read-lock.

       

        Blocks only if some thread has acquired write-lock.

        """

       

        self._read_ready.acquire()

        try:

            self._readers += 1

        finally:

            self._read_ready.release()


    def release_read(self):

        """Release a read-lock.

       

        """

       

        self._read_ready.acquire()

        try:

            self._readers -= 1

            if not self._readers:

                self._read_ready.notifyAll()

        finally:

            self._read_ready.release()


    def acquire_write(self):

        """Acquire a write lock. Blocks until there are no

       

        acquired read- or write-locks.

        """

        self._read_ready.acquire()

        while self._readers > 0:

            self._read_ready.wait()


    def release_write(self):

        """Release a write-lock.


        """

       

        self._read_ready.release()


原创粉丝点击