LeetCode 多线程 1115. 交替打印FooBar
Posted Alex Hub
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 多线程 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刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口