我正在做电梯程序。当有人按下中间的按钮时,电梯应该停下来。
如果电梯到了11楼,中间有人按了3楼,那么电梯应该停下来。
我尝试了使用多线程的程序,它的工作方式如下:
while(True):
t1= threading.Thread(target=get_input, name='t1')
t2= threading.Thread(target=traverse, name='t2')
t1.start()
time.sleep(5)
traverse()
t2.start()其中traverse函数将电梯移动到所需楼层。
简而言之,我实现的想法是一个线程接受输入,其他线程一次移动电梯。但是,有没有其他方法来代替线程(尽管这个解决方案是有效的)?
发布于 2019-11-26 22:01:24
在某些情况下,您可以在不使用线程的情况下重写它,但是您没有提到如何获取用户输入。你是从socket得到的吗?或者来自其他自定义协议等。所以在这里,我提供了一些我认为可以工作的场景和解决方案。
如果上面两个解决方案不适合你的用例,那么你可以创建一个状态机,如果遍历是非阻塞的,并且不做太多的工作。如果遍历执行大量工作,则此解决方案不合适,因为它可能会长时间阻塞单线程中的程序
https://stackoverflow.com/questions/59051795
复制相似问题