Skip site navigation (1)Skip section navigation (2)
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>