Subject: Re: [boost] [Boost-users] Brainstorming [WAS: Subject: Formal Review of Proposed Boost.Process library starts tomorrow]
From: Jeremy Maitin-Shepard (jeremy_at_[hidden])
Date: 2011-02-14 16:00:08


On 02/14/2011 12:50 PM, Oliver Kowalke wrote:
> Am 14.02.2011 21:14, schrieb Jeremy Maitin-Shepard:
>> SIGCHLD handler will repeatedly invoke waitpid(-1, &status, WNOHANG |
>> WUNTRACED | WCONTINUED), and then invoke any registered handlers.
>
> why polling - it waists CPU cycles?
> I expect that the thread waiting for child processes state change blocks
> (gets suspended) until it is notified by the kernel that something has
> happened.
> other worker-thread do other stuff like communicating with other process
> etc.

It wouldn't poll indefinitely, as that would lock up the thread in which
the signal handler was invoked. It is simply invoked repeatedly until
the error ECHILD (meaning no more unwaited-for children) is returned.
The notification is in the form of SIGCHLD, but that just means one or
more children need to be waited on.