堵塞轮询:
堵塞轮询是我们最简单的一种等待方式也是最常应用的等待方式。
但是,一旦阻塞等待也就意味着我们当前在进行等待的时候,父进程什么都干不了。
非堵塞轮询:
其中非阻塞等待,是等待的一种模式,
在进行一个等待的时候,那么或者是我们的子进程在进行运行的时候,它就会一直在进行检测。
那么检测我们的子进程,当前有没有退出,
如果没退出,我就一直检测子进程是否退了,并且父进程可以执行一些轻量化的代码程序任务;检测到了那父进程就正常返回就行了。
而我们为了正常去进行完成整个等待工作。
我们是需要通过while循环来将非堵塞的接口来完成一个非阻塞轮旋的过程。
那么对于父进程来说是等待子进程还是执行下自己的任务是最重要的呢?
很显然父进程要周期性的去等待子进程这件事情才是核心事宜。
所以一般在这种场景当中,我们所要做的任务一般都不会特别重,一般都是比较轻量化的任务。
比如说顺便可能检测一下我们对应的某些工作是否做完了。
可是如果父进程现在太忙了,可能一两秒之后再回收子进程行不行?
可以
不要因为我们讲僵尸进程有内存泄露的问题,就对它畏之如虎,
我是把它延迟回收,不代表我不回收。
不要觉得一个子进程退出来,我就必须立马回收它。
晚一点点其实也并不影响,尤其是如果有很多子进程的话,他们退出的时间比较集中的话,父进程统一进行回收,反而进行更好;