国产+高潮+在线,国产 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();
            。。。。。
  }
5421 2 0
2個回答

walkor 打賞

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

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

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

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

  • banzhiyanz 2019-07-17

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

  • walkor 2019-07-17

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

qpao123

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

  • walkor 2019-03-08

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

年代過于久遠,無法發(fā)表回答
??