zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python高级线程编程-线程安全的数据结构(二)

2023-06-13 09:18:44 时间

threading.RLock

RLock是Python中的可重入锁。可重入锁允许一个线程多次获取锁,而不会陷入死锁状态。在同一个线程内部,可以多次调用acquire()方法获取锁,只有在调用相同次数的release()方法时,才会释放锁。

下面的示例展示了如何使用RLock来实现线程安全的计数器,与上面的示例类似,不同之处在于我们使用了可重入锁:

import threading

class Counter(object):
    def __init__(self):
        self.lock = threading.RLock()
        self.count = 0

    def increment(self):
        with self.lock:
            self.count += 1

    def decrement(self):
        with self.lock:
            self.count -= 1

    def get_count(self):
        with self.lock:
            return self.count

在上面的示例中,我们使用RLock来保护计数器的操作,确保在同一个线程中,多次获取锁时不会发生冲突。