Yes, I have tried setting this flag. Doesn't seem to make any difference. My main thread doesn't do much. He registers for the signal and then waits on a self-pipe and wakes up when a signal arrives. All the I/O action is happening in the other threads. I'm not expecting the other threads to be interrupted during a system call like 'select', 'send', 'recv' etc, but even if they were, they detect EINTR and try again. On Sat, Jul 10, 2010 at 6:26 PM, Gao Free_Wind <gfree.wind@xxxxxxxxx> wrote: > Do you set the SA_RESTART flag for the signal? > If set SA_RESTART flag, it will restart the system calls include I/O. > > On Sat, Jul 10, 2010 at 4:08 PM, Dallas Clement <dallas.a.clement@xxxxxxxxx> > wrote: >> >> Hi All, >> >> I've noticed that asynchronous signals such as SIGINT, SIGTERM etc are >> delivered to my process long after the signal is sent if the receiving >> process is handling lots of I/O. My process is a multi-threaded web >> server. It's got one thread waiting on 'select' to accept incoming >> connections and a thread pool which reads the data with 'recv'. >> >> When I batter the web server with incoming traffic and I try to >> shutdown the server by sending a SIGINT or SIGTERM, I have observed >> that the web server finishes handling the incoming traffic before the >> kernel dispatches the signal to the process. It appears that the >> 'select' and 'recv' calls are getting highest priority with regard to >> scheduling. >> >> I realize this test may appear unnatural and is perhaps unrealistic, >> but I would like to be able to shutdown my server gracefully within a >> reasonable amount of time, no matter what kind of load it is handling. >> Don't want to have to wait several minutes for my signals to get >> handled under heavy load. Could someone please explain why signal >> delivery is slow under these conditions? >> >> Thanks in advance, >> >> Dallas >> -- >> To unsubscribe from this list: send the line "unsubscribe >> linux-c-programming" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html