LeetCode 多线程 1116. 打印零与奇偶数
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 多线程 1116. 打印零与奇偶数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1116. 打印零與奇偶數(shù)
Ideas
有幾個線程就用幾個信號量,最先開始的信號量初始化為1,其它初始化為0,然后根據(jù)條件判斷實現(xiàn)同步。
多線程的問題好多都是:鎖自己,解鎖別人。
Code
from threading import Semaphoreclass ZeroEvenOdd:def __init__(self, n):self.n = n + 1self.zero_lock = Semaphore(1)self.even_lock = Semaphore(0)self.odd_lock = Semaphore(0)# printNumber(x) outputs "x", where x is an integer.def zero(self, printNumber: 'Callable[[int], None]') -> None:for i in range(1, self.n):self.zero_lock.acquire()printNumber(0)if i % 2 == 1:self.odd_lock.release()else:self.even_lock.release()def even(self, printNumber: 'Callable[[int], None]') -> None:for i in range(2, self.n, 2):self.even_lock.acquire()printNumber(i)self.zero_lock.release()def odd(self, printNumber: 'Callable[[int], None]') -> None:for i in range(1, self.n, 2):self.odd_lock.acquire()printNumber(i)self.zero_lock.release()總結
以上是生活随笔為你收集整理的LeetCode 多线程 1116. 打印零与奇偶数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode Shell 194.
- 下一篇: LeetCode Algorithm 6