1

开发交通信号应用程序至少需要多少线程?我认为它只有一个,因为当任何一个灯为绿色时,其他三个方向将为红色。对于这个应用程序,不需要并行运行多个操作。

4

4 回答 4

2

如果不知道整个应用程序的范围是什么,就无法有意义地回答这个问题。(在简单的情况下,交通灯模拟当然可以在单个线程中实现……如果条件合适的话。)

然而,现实世界中的交通信号灯控制系统通常是用 C 等语言编写的,这些语言更擅长与控制器硬件接口。这让你的问题没有实际意义……有点。

于 2012-12-02T08:21:35.873 回答
1

作为司机,我当然希望这只是一个线程!

你只需要一个线程,但想象一下非线程安全代码或线程错误的影响......
有人可能真的死了!

已编辑

实际上,“这取决于”是正确的答案,如果有的话。

简单的红绿灯,例如人行横道,可以简单地阻塞等待按钮按下,然后完成循环并再次返回阻塞等待。

如果硬件不支持中断或其他单线程机制来处理实时输入信号,则可以接收许多输入的复杂事件驱动灯可能需要多个线程。

于 2012-12-02T08:15:09.253 回答
1

正如其他人所提到的,在不知道您拥有的确切条件和限制的情况下,这是一项无用的练习。

但这是我的想法:我可能会有 4 个线程:

  • 主线程——管理生命周期
  • 接收线程——接收来自其他来源的事件,可能来自不同的硬件部分,比如消防车“遥控器”,或者来自附近交通信号灯的通信,以确定附近交通信号灯是否同步。
  • 广播线程——将信号从这个特定的红绿灯发送到其他消费者(其他红绿灯、指挥和控制中心……)
  • 处理线程——被委托处理从其他两个线程(接收器、广播器)发送和接收的事件。
于 2012-12-02T08:40:17.717 回答
0

在一个非常微不足道的情况下是的。但通常交通信号取决于许多因素,例如:

  1. 根据流量显示红/绿的时间
  2. 在2-3条道路的任何交叉点上,每条道路的信号应该是同步的。

以此类推……

所以这个问题没有固定的答案。

于 2012-12-02T08:21:02.550 回答