Tengo un bucle que se pide básicamente esto cada pocos segundos (después de que el tiempo de espera):estallido de la toma de seleccionar
while(true){
if(finished)
return;
switch(select(FD_SETSIZE, &readfds, 0, 0, &tv)){
case SOCKET_ERROR : report bad stuff etc; return;
default : break;
}
// do stuff with the incoming connection
}
Así que, básicamente, para cada pocos segundos (que se especifica por tv), reactiva la escucha .
Esto se ejecuta en el hilo B (no en el hilo principal). Hay momentos en los que quiero terminar este bucle de aceptación inmediatamente desde el hilo A (hilo principal), pero parece que tengo que esperar hasta que termine el intervalo de tiempo ...
¿Hay alguna manera de interrumpir la función de selección de otro hilo? ¿Entonces el hilo B puede salir al instante?
Nota: puede cortar el enunciado if y simplemente escribir mientras (! Terminado). –
Eso tomará 100% de tiempo de CPU sin embargo. Definitivamente no es aceptable. – kamziro
whoops, debo haber leído mal que – kamziro