¿Cómo dejar que un hilo que bloquea en recv () salga correctamente?

Hay un hilo que le gusta esto:

{  
    ......    
    while (1)
    {
        recv(socket, buffer, sizeof(buffer), 0);
        ......
    }
    close(socket);           
}  

Debido a que el hilo está bloqueando en la llamada recv (), ¿cómo puedo dejar que el hilo salga correctamente?