在linux中是主动等待常见的

我正和一位同事辩论,如果你在Linux下主动等待,那么这是不好的编程。

他比bash脚本更有经验,并且说这是很常见的做法。

例如,我们尝试在插入WiFi USB后启动bash脚本。 如果有人在这里,他会每分钟仰望。 我将采取USB事件,当它是WiFi,启动我的脚本与该设备。

请帮助我们解决这个问题。

正如有人已经提到,常见的和不好的不是排他性的。 所以我们来看看它的优缺点:

这听起来像你正在做的事情基本上是事件驱动被动的 “编程”,而你的同事则主张采用投票方式。

反应式编程的优点是,某些事情恰好发生在它应该的时候,即插入USB棒时。 缺点是系统需要支持这个,也就是说必须提供一些钩子来触发你的脚本。

这意味着投票方式通常更为广泛适用和便携 ,但根据定义,(几乎) 总是有点晚 。 如果这不是问题,那么由于上述便携性,轮询方法可能是有利的。

有了你的具体的USB的东西,这听起来像你已经想出了如何挂钩你的脚本到udev系统。 就我个人而言,我想说这是要走的路。 否则,你会等待一分钟,让你的脚本找出插入的东西,或者增加轮询节奏,浪费越来越多的cpu周期(尽管现在sleep不再那么昂贵)。

定期轮询通常是不可避免的,而且是相当普遍的。 当CPU消耗太多时,称为主动等待,因为周期很小,轮询代码很重。 长期的问题是它降低了反应性。

您还应该考虑到,避免定期轮询可能需要更复杂的代码,难以维护。