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

信號重裝問題

dojack

剛學(xué)workerman,在看源碼過程中,對信號重裝不大明白!
1、為什么子進程中要做下信號重裝?
2、為什么重裝時先是使用pcntl_signal(SIGINT, SIG_IGN, false) 取消安裝信號, 再使用self::$globalEvent->add(SIGINT, EventInterface::EV_SIGNAL, array('\Workerman\Worker', 'signalHandler'))安裝新信號?兩種信號安裝方式有啥區(qū)別呢?

4110 3 0
3個回答

walkor 打賞

主進程是通過pcntl_signal設(shè)置的信號,子進程是通過eventLoop安裝的信號,二者有可能沖突,所以在子進程中先pcntl_signal(SIGINT, SIG_IGN, false) 取消安裝信號

  • 暫無評論
yurius

剛測試過,pcntl_signal安裝的信號對進入事件循環(huán)的子進程無效,必須通過Event->add(SIGINT, Libevent::EV_SIGNAL)安裝信號,子進程才會響應(yīng)請問何解?謝謝!

  • 暫無評論
walkor 打賞

pcntl_signal安裝信號處理函數(shù)后,如果進程收到對應(yīng)信號,需要以下條件之一才能觸發(fā)。
1、代碼段中聲明了declare(ticks=1);
2、代碼中調(diào)用pcntl_signal_dispatch時
workerman本身沒有使用declare(ticks=1);,所以1不會滿足。而pcntl_signal_dispatch也只是在使用select事件庫會用到。如果使用libvent或者event事件庫,則pcntl_signal_dispatch也不會被調(diào)用,所以子進程里pcntl_signal設(shè)置的信號處理函數(shù)在使用libvent或者event事件庫時永遠不會觸發(fā)。

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