国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

為什么在workerman里面的monitorWorkers方法里面 pcntl_signal_dispatch()寫兩遍

qpao123
protected static function monitorWorkers()
    {
        self::$_status = self::STATUS_RUNNING;
        while (1) {
            // Calls signal handlers for pending signals.
            pcntl_signal_dispatch();
            // Suspends execution of the current process until a child has exited, or until a signal is delivered
            $status = 0;
            $pid    = pcntl_wait($status, WUNTRACED);
            // Calls signal handlers for pending signals again.
            pcntl_signal_dispatch();
            。。。。。
  }
5612 2 0
2個(gè)回答

walkor 打賞

pcntl_signal_dispatch是檢察是否有未處理的信號(hào),如果有的話調(diào)對(duì)應(yīng)信號(hào)的回調(diào)函數(shù)。

pcntl_wait是進(jìn)入睡眠,如果有子進(jìn)程退出事件或者其它信號(hào)事件就會(huì)被喚醒返回,程序繼續(xù)向下執(zhí)行。

pcntl_wait返回后 首先pcntl_signal_dispatch檢查,然后處理子進(jìn)程退出事件(如果有進(jìn)程退出的話)。

處理進(jìn)程退出事件過程中可能會(huì)有新的信號(hào)到來(lái),在沒有調(diào)用pcntl_signal_dispatch時(shí)這些信號(hào)不會(huì)被處理,所以在下次pcntl_wait是進(jìn)入睡眠前再檢查一遍,避免后來(lái)的信號(hào)沒有被處理。

  • banzhiyanz 2019-07-17

    請(qǐng)問那是不是pcntl_signal_dispatch()就檢測(cè)到一次有信號(hào)后,就結(jié)束了。如果在繼續(xù)監(jiān)聽的話,就需要在pcntl_signal_dispatch()一次?
    對(duì)這個(gè)pcntl_signal_dispatch不是很好的理解,是一直監(jiān)聽系統(tǒng)是否有信號(hào)發(fā)送過來(lái),還是監(jiān)聽到了一次后,就結(jié)束了

  • walkor 2019-07-17

    pcntl_signal_dispatch不是監(jiān)聽信號(hào),是檢查是否有未處理的信號(hào)。

qpao123

感謝大神的回復(fù),太感激了。雖然理解的還不夠深入。想請(qǐng)問下,workerman是怎么實(shí)現(xiàn)master-worker模型的。請(qǐng)求來(lái)了,master知道了,怎么通知worker工作,怎么把請(qǐng)求轉(zhuǎn)過去的呢,希望大神指點(diǎn)一二

  • walkor 2019-03-08

    客戶端直接和worker進(jìn)程通訊,master進(jìn)程不做任何業(yè)務(wù)邏輯

年代過于久遠(yuǎn),無(wú)法發(fā)表回答
??