Ahojte,
O co mi ide, mam thread ktory obsahuje funkciu select(), ako je nizsie uvedena. Timeout je nastaveny na 3FFFF.
Existuje nejake elegantne riesenie, ako "zobudit" select(), a nasledne aj ukoncit thread -
select_thread?
Momentalne to riesim tak, ze v threade si zaregistrujem SIGNAL - SIGUSR, a v parentovi, poslem cez pthread_kill(SIGUSR). Samozrejme, po tomto select() vrati hodnotu -1 a errno = 4 (system interrupt).
Hladam elegantnejsie riesenie, alebo, je toto "standardne" riesenie?
thread_select.c:...
static void * select_thread(void * n);
...
Zaregistrovanie, nastavenie sigmask, sigset...
...
for(;
{
result = select(nfds, &readfds, NULL, NULL, &timeout);
if(result == -1 && errno == 4)
break;
}
/* loop successfuly ended */
main.cresult = pthread_create(ptrselect_thread, select_thread,...);
/* ...*/
result = pthread_kill(select_thread, SIGUSR1);
if(result == 0)
pthread_join(...)
Diky.