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

Workerman 中 Worker::stopAll(); Master進(jìn)程中為什么要增加一個(gè)Timer::add() 去清理殘留pid數(shù)據(jù)?

meows
Timer::add(1, "\\Workerman\\Worker::checkIfChildRunning");

/**
* check if child processes is really running
*/
public static function checkIfChildRunning()
{
    foreach (static::$_pidMap as $worker_id => $worker_pid_array) {
    foreach ($worker_pid_array as $pid => $worker_pid) {
        if (!\posix_kill($pid, 0)) {
        unset(static::$_pidMap[$worker_id][$pid]);
        }
    }
  }
}

 $pid = \pcntl_wait($status, \WUNTRACED);
 // Calls x handlers for pending signals again.
 \pcntl_signal_dispatch();
  if($pid > 0)
  {
    // ....
        // Clear process data.
        unset(static::$_pidMap[$worker_id][$pid]);
    // ....
  }

主進(jìn)程,檢查子進(jìn)程是否全部退出,然后清理子進(jìn)程殘留數(shù)據(jù)。這里通過(guò)添加定時(shí)器去檢測(cè)是否運(yùn)行,子進(jìn)程退出后,主進(jìn)程的pcntl_wait 不是會(huì)收到退出pid 然后進(jìn)行清理。
那么為什么還要額外添加定時(shí)器去清理呢?這個(gè)定時(shí)器在主進(jìn)程退出的時(shí)候也沒(méi)有進(jìn)行Timer::del($timer_id) 呢???

1964 1 0
1個(gè)回答

six

Linux下信號(hào)可能會(huì)丟失的,而pcntl_wait 是等待SIGCHLD信號(hào),所以pcntl_wait 可能會(huì)

  • meows 2021-11-06

    清理殘留PID定時(shí)器,為何在退出主進(jìn)程的時(shí)候,沒(méi)有刪除掉呢?

  • six 2021-11-06

    不知道了。進(jìn)程退出了什么都銷(xiāo)毀了,定時(shí)器也就沒(méi)了吧

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