Re: [PATCH 5/4] run-command: implement abort_async for pthreads
From: Jeff King <hidden>
Date: 2016-06-15 22:50:57
On Fri, Apr 01, 2011 at 10:13:23PM +0200, Erik Faye-Lund wrote:
On Fri, Apr 1, 2011 at 10:05 PM, Jeff King [off-list ref] wrote:quoted
On Fri, Apr 01, 2011 at 09:57:14PM +0200, Erik Faye-Lund wrote:quoted
quoted
But this does not help the case at hand in any way. How would you interrupt a thread that is blocked in ReadFile()? The point of pthread_cancel() is that it interrupts blocked system callsThere is no mention of such a guarantee in POSIX (section 2.9.5 Thread Cancellation), so relying on that is undefined behavior.Eh? My pthreads(7) says that read() is required to be a cancellation point acrroding to POSIX. I didn't dig up the actual reference in the standard, though.I don't understand where the implementor would get that from after reading through it, but if there's something I've missed we can fix it by replacing my pthread_cancel with this, no?
Out of curiosity, which POSIX are you reading? My page references POSIX.1-2001, but technically pthreads were originally defined in POSIX.1c-1995.
static inline int pthread_cancel(pthread_t thread)
{
SetEvent(thread.cancel_event);
CancelSynchronousIo(thread.handle);
}There are a ton of cancellation points, not just I/O (e.g., sleep). However, interrupting a read would probably be sufficient for git's purposes. -Peff