🐍
1114. Print in Order
説明
問題
全てが間違っているかもしれない説明です。
ざっくり回答コード
デバッグしたかったのでprintしています。
参考にする時は、printをぬいてね。
さて、これを実行すると、次のような順序で実行されます。
1
2
3
4
5
8
11
6
7
8
9
10
12
13
1~4
def __init__(self):
の中を同期的に進みます。
self.locks[0].acquire()
でlockを取得します。
5,8,11
各メソッドが呼ばれます。
この問題的にこのメソッドは並列で動いています。
6~10,12,13
6が呼ばれたときに、printFirst()
が呼ばれます。
その後ロック(self.locks[0].release()
)を解放します。
ここで、self.locks[0]を解法したので、次with句で指定しているところで使用できます。
ここでprintSecond()
が呼ばれた後で、同様にロックを解法して次のwith句が取得します。
このようにロックを解法する形で順番に呼ばれていき、最後にprintThird()
が呼ばれます。
Discussion