##// END OF EJS Templates
worker: make waitforworkers reentrant...
worker: make waitforworkers reentrant We are going to use it in the SIGCHLD handler. The handler will be executed in the main thread with the non-blocking version of waitpid, while the waitforworkers thread runs the blocking version. It's possible that one of them collects a worker and makes the other error out (no child to wait). This patch handles these errors: ECHILD is ignored. EINTR needs a retry. The "pids" set is designed to be only modifiable by "waitforworkers". And we only remove items after a successful waitpid. Since a child process can only be "waitpid"-ed once. It's guaranteed that "pids.remove(p)" won't be called with duplicated "p"s. And once a "p" is removed from "pids", that "p" does not need to be killed or waited any more.

File last commit:

r14046:b24e5a70 default
r30414:5069a8a4 default
Show More
footer.tmpl
5 lines | 80 B | application/x-cheetah | CheetahLexer
<script type="text/javascript">process_dates()</script>
{motd}
</body>
</html>