Date: Fri, 31 Mar 2006 15:40:23 -0500 (EST) From: Daniel Eischen <deischen@freebsd.org> To: Niall Douglas <s_sourceforge@nedprod.com> Cc: freebsd-threads@freebsd.org Subject: Re: recvfrom() not a thread cancellation point Message-ID: <Pine.GSO.4.43.0603311535210.7507-100000@sea.ntplx.net> In-Reply-To: <442D9E8C.7186.4BAD0@s_sourceforge.nedprod.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 31 Mar 2006, Niall Douglas wrote: > Hi, > > How do I receive UDP packets using recvfrom() when it would seem that > recvfrom() is not a thread cancellation point on FreeBSD 6.0? 1) select() or poll() instead, then recvfrom(). UDP packets are never partial IIRC. 2) Unmask a signal in the thread doing the recvfrom(), then use pthread_kill() to interrupt it (don't use SA_RESTART for sa_flags in the signal action). > Is there an alternative method of receiving UDP packets which is > thread cancellable? The best I can see is using plain read() but this > of course won't return the sender of the UDP packet. -- DE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.43.0603311535210.7507-100000>