cari

Rumah  >  Soal Jawab  >  teks badan

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

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

阿神阿神2787 hari yang lalu640

membalas semua(2)saya akan balas

  • 黄舟

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

    rlock ialah kunci masuk semula Anda hanya boleh memahami bahawa ia disertakan dengan pembilang mempunyai pembilang +1, dan keluaran mempunyai pembilang nilai negatif tidak dibenarkan, jika tidak, pengecualian akan berlaku .

    Mengapa anda melakukan ini? Kerana senario aplikasi berbeza, kunci masuk semula boleh memanggil kaedah lain yang memerlukan kunci, tetapi kunci bukan masuk semula tidak boleh melakukan ini.

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

    balas
    0
  • PHPz

    PHPz2017-04-18 10:33:29

    Perbezaan antara kunci dan rlock ialah r:
    reentrant, yang boleh dimasukkan berulang kali Sesuatu thread boleh memperoleh rlock yang sama beberapa kali tanpa disekat Jika thread memperoleh rlock beberapa kali, ia mesti mengeluarkan nombor yang sama kali. Barulah rlock ini boleh dikeluarkan.

    Kunci adalah berbeza Ia hanya boleh diperoleh sekali dan tidak boleh diperoleh semula sebelum ia dikeluarkan.

    Untuk maklumat lanjut, sila rujuk jawapan ini:
    http://stackoverflow.com/ques...

    balas
    0
  • Batalbalas