Prosim vas, momentalne sa snazim nahradit funkcionalitu funkcie select() pod windowsami, kedze pouzivam blokovany select, pokial nenastane nejaka zmena a chcem z hlavneho threadu moj TCP server ukoncit, tak samozrejme nepodari sa to, pretoze TCP listening thread je zablokovany na select-e a hlavny thread caka kym skonci tento listening thread.
Na Linuxe som to vyriesil umiestnenim pipe do selectu, kde ked chcem interruptnut select, tak len nieco zapisem do pipy a select sa mi hned vrati. Bohuzial select pod Windowsom nedokaze pracovat s nicim inym ako so socketmi. Nasiel som moznu alternativu a to je vytvorit event pre kazdy socket cez WSACreateEvent + jeden dummy event, potom cez WSAEventSelect nastavit vsetkym eventom okrem jedneho socket, na ktorom maju pocuvat, nasledne volanie WSAWaitForMultipleEvents, kde keby chcem interruptnut tento wait, tak len cez WSASetEvent odoslem ze nastal dummy event.
Kde je vsak problem. WaitForMultiple... funkcie maju limit 64 objektov, na ktorych mozu cakat, pri select()-e som to riesil len zadefinovanim FD_SETSIZE, avsak tu to nemam ako riesit.
Vedel by mi tu fakt niekto poradit ako sa popasovat s mojim problemom? Proste chcem interruptovat volanie funkcie select(), resp naprogramovat si vlastny select(), ale nedokazem prist na to ako to spravit pod Windowsom. Je vsak mozne ze na cely problem idem zle, ale neviem si predstavit ako inak obsluhovat v neblokovacom rezime viac spojeni.