検索

ホームページ  >  に質問  >  本文

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

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

阿神阿神2795日前646

全員に返信(2)返信します

  • 黄舟

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

    rlock はリエントラント ロックであり、Acquire には +1 のカウンターがあり、Release には -1 のカウンターがあり、それ以外の場合は例外が発生します。

    なぜこれを行うのでしょうか? アプリケーションのシナリオが異なるため、リエントラント ロックはロックを必要とする別のメソッドを呼び出すことができますが、非リエントラント ロックはこれを行うことができません。

    リーリー

    返事
    0
  • PHPz

    PHPz2017-04-18 10:33:29

    lock と rlock の違いは、r:
    再入可能であり、スレッドはブロックされずに同じ rlock を複数回取得できます。スレッドが rlock を複数回取得する場合、解放する前に同じ回数だけ解放する必要があります。解放されます。

    ロックは異なります。一度のみ取得でき、解放されるまで再度取得することはできません。

    詳細については、この回答を参照してください:
    http://stackoverflow.com/ques...

    返事
    0
  • キャンセル返事