Date: Fri, 31 Mar 2006 21:54:26 +0100 From: "Niall Douglas" <s_sourceforge@nedprod.com> To: freebsd-threads@freebsd.org Subject: Re: recvfrom() not a thread cancellation point Message-ID: <442DA512.7000.1E3815@s_sourceforge.nedprod.com> In-Reply-To: <Pine.GSO.4.43.0603311535210.7507-100000@sea.ntplx.net> References: <442D9E8C.7186.4BAD0@s_sourceforge.nedprod.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 31 Mar 2006 at 15:40, Daniel Eischen wrote: > > 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. Ah, that's a good idea. > 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). Not practical unfortunately as who knows how many threads are concurrently doing recvfrom()'s. Thanks for the hint. I hadn't thought of using poll. Cheers, Niall
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?442DA512.7000.1E3815>