Dear Sir:<br><br>I found a workaround to solve this problem:<br>Just reset the readSet before select():<br><br>void BasicTaskScheduler::SingleStep<div id="1fek" class="ArwC7c ckChnd">(unsigned maxDelayTime) {<br>.....</div>
&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; HandlerIterator iter(*fReadHandlers);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; HandlerDescriptor* handler;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; FD_ZERO(&amp;readSet);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while ((handler = iter.next()) != NULL) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; FD_SET((unsigned)handler-&gt;socketNum, &amp;readSet);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br>&nbsp; int selectResult = select(fMaxNumSockets, &amp;readSet, NULL, NULL, &amp;tv_timeToDelay);<br>...<br>}<br><br>It is strange since each fd in readSet can be selected individually and the fds seem the same as in fReadSet.<br>
So I force readSet to be reset for each socket number in handlers and it works finally.<br><br>BR.<br>Brain Lai<br>