LeetCode 多线程 1115. 交替打印FooBar

Posted Alex Hub

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 多线程 1115. 交替打印FooBar相关的知识,希望对你有一定的参考价值。

1115. 交替打印FooBar

Ideas

交替锁的设计,两把锁,foo执行的时候把foo lock acquire,print完了只有把bar lock release,这样foo就得等着,然后bar执行的时候把bar lock acquire,print完了之后把foo lock release,这样就能交替打印foo和bar了。

Code

Python

from threading import Lock


class FooBar:
    def __init__(self, n):
        self.n = n
        self.print_foo = Lock()
        self.print_bar = Lock()
        self.print_bar.acquire()

    def foo(self, printFoo: 'Callable[[], None]') -> None:
        for i in range(self.n):
            self.print_foo.acquire()
            # printFoo() outputs "foo". Do not change or remove this line.
            printFoo()
            self.print_bar.release()

    def bar(self, printBar: 'Callable[[], None]') -> None:
        for i in range(self.n):
            self.print_bar.acquire()
            # printBar() outputs "bar". Do not change or remove this line.
            printBar()
            self.print_foo.release()

以上是关于LeetCode 多线程 1115. 交替打印FooBar的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(多线程)- 1115. 交替打印 FooBar

leetcode中等1115交替打印 FooBar

阿里真题:线程交叉打印

阿里真题:线程交叉打印

LeetCode(多线程)- 题集

LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口