11

Does Event and Lock do the same thing in these scenes?

class MyThread1(threading.Thread):
    def __init__(event):
        self.event = event

    def run(self):
        self.event.wait()
        # do something
        self.event.clear()

another:

class MyThread2(threading.Thread):
    def __init__(lock):
        self.lock = lock

    def run(self):
        self.lock.acquire()
        # do something
        self.lock.release()
4

2 に答える 2

12

イベントを待つと、イベントが発生するまで実行が停止しevent.set()ます

event.wait()  # waits for event.set()

ロックの取得は、ロックがすでに取得されている場合にのみ停止します

lock.acquire() # first time: returns true
lock.acquire() # second time: stalls until lock.release()

どちらのクラスにも異なるユースケースがあります。この記事は、違いを理解するのに役立ちます。

于 2012-07-12T07:59:54.323 に答える