У меня есть цикл, который в основном вызывает это каждые несколько секунд (после тайм-аута):вспыхивают из гнезда выберите
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
}
Так в основном за каждые несколько секунд (что определяется ТВ), он активирует прослушивание ,
Это выполняется на резьбе B (не основной нить). Есть моменты, когда я хочу закончить этот акцепторный цикл сразу из потока A (основной поток), но похоже, что мне нужно подождать, пока промежуток времени не закончится.
Есть ли способ нарушить функцию выбора из другого потока поэтому поток B может немедленно прекратиться?
Sidenote: вы можете вырезать if-инструкцию и просто написать while (! Finished). –
Это займет 100% процессорного времени. Определенно не приемлемо. – kamziro
Крики, я, должно быть, неправильно понял, что – kamziro