atom feed4 messages in org.freebsd.freebsd-threadsrecvfrom() not a thread cancellation ...
FromSent OnAttachments
Niall DouglasMar 31, 2006 8:26 pm 
Daniel EischenMar 31, 2006 8:40 pm 
Niall DouglasMar 31, 2006 8:56 pm 
Daniel EischenMar 31, 2006 9:00 pm 
Subject:recvfrom() not a thread cancellation point
From:Daniel Eischen (deis@freebsd.org)
Date:Mar 31, 2006 8:40:10 pm
List:org.freebsd.freebsd-threads

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.