[En-Nut-Discussion] NutUdpReceiveFrom blocks in a thread
    Coleman Brumley 
    cbrumley at gopolar.com
       
    Thu May 27 15:43:41 CEST 2010
    
    
  
Hello,
 
I have a situation where I'm attempting to use NutUdpReceiveFrom in a
thread.  However, the thread seems to be blocking on the call to
NutUdpReceiveFrom, even though I have a short timeout.  
 
Here's a snippet of my thread code:
 
char buff[1500];           //on the heap
 
THREAD(Rx,arg)
{
    int n;
    UDPSOCKET*s =(UDPSOCKET*)arg;
    printf("Starting Rx Thread...\n");
    for(;;)
    {
         n=NutUdpReceiveFrom(s,&fromaddr,&fromport,&buff,sizeof(buff),1);
         if(n<0)
         {
            NutThreadYield();
            continue;
         }
         printf("Got some data!\n");
    }
}
 
bool init(someport)
{
       sock=NutUdpCreateSocket(someport);
       NutThreadCreate("Rx",Rx,sock,sizeof(buff));
       NutUdpSendTo(sock,...); //to illustrate send and receive are on
different threads
}
 
The use of this thread causes the other threads in the system not to run.  I
don't even see the terminal output from the Rx Thread.  I would think stack
overflow, but none of the exception handlers are executing.  
 
Is there an issue with the thread safeness of NutUdpReceiveFrom?
 
Best Regards,
Coleman
 
    
    
More information about the En-Nut-Discussion
mailing list