recvfrom() not a thread cancellation point
Niall Douglas
s_sourceforge at nedprod.com
Fri Mar 31 20:54:54 UTC 2006
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
More information about the freebsd-threads
mailing list