threadingtest - python threading中的lock rlock 为何rlock可以调用多次acquire
阿神
阿神 2017-04-18 10:31:29
0
2
577

在python的多线程中,使用threading中的lock rlock锁, 为何rlock可以调用多次acquire,lock缺不能,lock调用多次而且会发生死锁,rlock不会,求大神指点下

阿神
阿神

闭关修行中......

répondre à tous(2)
黄舟

rlock est un verrou réentrant. Vous pouvez simplement comprendre qu'il est livré avec un compteur de +1, et que la libération a un compteur de -1. Les valeurs négatives ne sont pas autorisées, sinon une exception se produira. .

Pourquoi faites-vous cela ? Étant donné que les scénarios d'application sont différents, les verrous réentrants peuvent appeler une autre méthode qui nécessite le verrou, mais les verrous non réentrants ne peuvent pas le faire.

def fun1():
    rlock.acquire()
    fun2()
    rlock.release()

def fun2():
    rlock.acquire()
    rlock.release()
PHPzhong

La différence entre lock et rlock est r :
réentrant, qui peut être saisi à plusieurs reprises. Un thread peut acquérir le même rlock plusieurs fois sans être bloqué. Si un thread acquiert rlock plusieurs fois, il doit libérer le même numéro. Ce n'est qu'alors que ce rlock pourra être libéré.

Le verrouillage est différent. Il ne peut être acquis qu'une seule fois et ne peut pas être acquis à nouveau avant d'être libéré.

Pour plus d'informations, veuillez vous référer à cette réponse :
http://stackoverflow.com/ques...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!