自定义锁定行为:Python

2024-04-25 07:44:11 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法改变现状锁定。获取()这样一种行为:它只尝试获取锁,如果它已被另一个进程锁定,则执行其他操作?你知道吗

当前代码:(如果线程遇到被锁定的树节点,则应该从父节点重新启动查询)

if current.parent.lock.locked():           ...this current behavior is not thread safe
    return _get_node(data, current.parent)
else:
    current.parent.lock.acquire()
    current.lock.acquire()
    left.lock.acquire()                    ...or... right.lock.acquire()

我找到了this网站解释了一些事情,但这似乎不是人们经常做的事情,因为找到更多相关信息是不可能的


Tags: 代码lockif节点进程currentthis事情
1条回答
网友
1楼 · 发布于 2024-04-25 07:44:11

根据[Python docs]acquire方法有一个blocking参数。当设置为False时,请求是非阻塞的,并且在成功时返回True(您现在已经获得了锁),或者在锁已经被其他人获得并且尚未释放时返回False。你知道吗

生成的代码是:

if lock.acquire(False):
    # code if lock is acquired
else:
    # code if lock was already acquired by someone else

相关问题 更多 >