监听程序都是 while(true){......}或者死循环吗?
今天搭建 laravel 的队列,执行了 php artisan queue:work 命令,和同事讨论是不是是一个死循环。进而上升到 tcp 监听 ip: 端口号,apache 其实都是死循环程序(while (true){…..}), 他认为不是,觉得死循环太 low, 而且程序怎么能写死循环呢,这样太消耗系统资源。
我的关观点是:不论什么语言,所有的程序无非 顺序执行 分支执行(if else) 循环执行。既然是监听程序,那就是永不退出的程序,那就只能是死循环,没有别的选择
他的观点是:(他之前是写 java 的)具体是什么也不清楚,但是绝对不是死循环这么 low,尤其是 tcp 链接监听数据,可能是 timer。
我事后又在想,其实很多程序都是不退出的,比如正在运行的 win 操作系统,打开的窗口,其实都是不退出,但是不退出除了死循环还有比的方式吗?我倒是 不是想争论对错,就是突然对这个问题来了兴趣,想来求证一下,有哪位大神可以解说一下吗?非常感谢
推荐文章: