我正和一位同事辩论,如果你在Linux中进行主动等待,这是不好的编程。
他比bash脚本更有经验,并且说它很常见。
例如,我们尝试在插入WiFi USB后启动bash脚本。 如果有人在这里,他会每分钟抬头看。 我将接受USB事件,当它发送WiFi时,请使用该设备启动我的脚本。
请帮助我们解决这个问题。
答案 0 :(得分:2)
正如有人已经提到的,普通和坏事并不是排他性的。让我们来看看优势和缺点:
听起来你正在做的事情基本上是事件驱动或被动“编程”,而你的同事则主张采用投票方式。
反应式编程的优势是指某些事情应该发生的时候,即插入usb棒时。 缺点是系统需要支持这一点,即必须提供一些钩子才能启动脚本。
这意味着轮询方法通常更广泛适用和便携,但根据定义,它们(几乎)总是稍晚。如果这不是一个问题,那么轮询方法可能是有利的,因为它具有上述可移植性。
使用您的特定USB功能,听起来您已经想出了如何将脚本挂钩到udev系统。就个人而言,我会说这是要走的路。否则你要么等待一分钟让你的脚本找出插入的东西,要么增加轮询节奏,浪费越来越多的cpu周期(尽管如今,sleep
并不是那么昂贵了。)
答案 1 :(得分:1)
定期民意调查通常是不可避免的,而且很常见。当它消耗太多的CPU时,它被称为主动等待,因为周期很小和/或轮询代码很重。长期存在的问题是降低了反应性。
您还应该考虑到避免定期轮询可能需要更复杂的代码,更难维护。