LeetCode 多线程 1114. 按序打印
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 多线程 1114. 按序打印
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1114. 按序打印
Ideas
并發執行問題是多線程要解決的經典問題,此題是典型的執行屏障問題,因此我們需要構造幾把鎖來確保執行順序。
題目要求按順序依次執行三個方法,為了保證線程的執行順序,可以在方法之間創建一些鎖,即第二個方法必須在第一個方法之后執行,第三個方法必須在第二個方法之后執行。
有兩個依賴關系,所以我們定義兩把鎖,firstJobDone 和 secondJobDone,分別表示 first() 任務是否執行完畢和 second() 任務是否執行完畢。
我們來分析一下:
Code
Python
from threading import Lockclass Foo:def __init__(self):self.firstJobDone = Lock()self.secondJobDone = Lock()self.firstJobDone.acquire() # 一開始兩個任務都沒有執行過,先都鎖上self.secondJobDone.acquire()def first(self, printFirst: 'Callable[[], None]') -> None:printFirst()self.firstJobDone.release() # first() 任務執行完,解鎖def second(self, printSecond: 'Callable[[], None]') -> None:with self.firstJobDone:printSecond()self.secondJobDone.release()def third(self, printThird: 'Callable[[], None]') -> None:with self.secondJobDone:printThird()總結
以上是生活随笔為你收集整理的LeetCode 多线程 1114. 按序打印的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020年第十一届蓝桥杯 - 省赛 -
- 下一篇: 2020年第十一届蓝桥杯 - 省赛 -