请问这个UDP回显实验的任务,它没有延时的话会一直执行下去,那么比它优先级低的任务怎么执行?

static void
udpecho_thread(void *arg)
{
  int sock = -1;
  char *recv_data;
  struct sockaddr_in udp_addr,seraddr;                    
  int recv_data_len;
  socklen_t addrlen;
  
  DEBUG_P("±¾µØ¶Ë¿ÚºÅÊÇ%d\n\n",LOCAL_PORT);
  
  while(1)
  {
    recv_data = (char *)pvPortMalloc(RECV_DATA);    
    if (recv_data == NULL)
    {
        DEBUG_P("No memory\n");
        goto __exit;
    }
    
    sock = socket(AF_INET, SOCK_DGRAM, 0);        
    if (sock < 0)
    {
      DEBUG_P("Socket error\n");
      goto __exit;
    }
    
    udp_addr.sin_family = AF_INET;                //IPv4 
    udp_addr.sin_addr.s_addr = INADDR_ANY;                    
    udp_addr.sin_port = htons(LOCAL_PORT);               
    memset(&(udp_addr.sin_zero), 0, sizeof(udp_addr.sin_zero));            
    
    if (bind(sock, (struct sockaddr *)&udp_addr, sizeof(struct sockaddr)) == -1)       
    {
      DEBUG_P("Unable to bind\n");
      goto __exit;
    }
    while(1)
    {
        recv_data_len=recvfrom(sock,recv_data,                                                   
                             RECV_DATA,0,                                                       
                             (struct sockaddr*)&seraddr,
                             &addrlen);
                             
        DEBUG_P("receive from %s\n",inet_ntoa(seraddr.sin_addr));
                             
    #if UDP_SPEED_UP
        SetSpeedUpInfo(&SpeedUpInfo, LOCAL_PORT);                       
    #endif                       
        sendto(    sock,recv_data,                                                            
                recv_data_len,0,                                                                
                (struct sockaddr*)&seraddr,                                           
                addrlen);                                                                              
    }
    
__exit:
    if (sock >= 0) closesocket(sock);
    if (recv_data) free(recv_data);
  }
}