recherche

Maison  >  Questions et réponses  >  le corps du texte

threadingtest - python threading中的lock rlock 为何rlock可以调用多次acquire

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

阿神阿神2787 Il y a quelques jours638

répondre à tous(2)je répondrai

  • 黄舟

    黄舟2017-04-18 10:33:29

    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()

    répondre
    0
  • PHPz

    PHPz2017-04-18 10:33:29

    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...

    répondre
    0
  • Annulerrépondre