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