<HTML>
<HEAD>
<TITLE>Re: [Live-devel] BasicTaskScheduler not reading fast enough?</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>&gt;The problem with this is that it can potentially lead to 'livelock'<BR>
&gt;Situations - e.g., if the handler of a 'delayed task' itself calls<BR>
&gt;&quot;TaskScheduler::schedulerDelayedTask()&quot; to set up a new delayed task<BR>
&gt;(especially if the 'delay' is zero). &nbsp;That's why<BR>
&gt;&quot;BasicTaskScheduler::SingleStep()&quot; always tries to handle at least<BR>
&gt;one socket (and iterates through all the available sockets).<BR>
<BR>
Are you saying that my optimization for handling alarms early could cause an issue? ( I also call it after<BR>
the select as well).<BR>
I understand your statement to indicate that if the task that is called in fDelayQueue.handleAlarm <BR>
adds an schedules an additional task, then this would also have to be handled in the handleAlarm function.<BR>
If so, isn&#8217;t this also the case when we call handleAlarm after the select?<BR>
<BR>
Another thing I noticed was that I do not believe the turnOn / turnOffBackgroundReadHandling <BR>
functions are handling the fMaxNumSockets in the most efficient way. &nbsp;When I read the man page for <BR>
select it says: <BR>
&#8220; nfds is the highest-numbered file descriptor in any of the three sets, plus 1.&#8220; <BR>
(On windows I believe nfds is ignored).<BR>
<BR>
Looking at the code, the turnOn function seems to be fine, but the turnOff function just negates<BR>
the fMaxNumSockets variable, rather than finding the current highest numbered file descriptor.<BR>
<BR>
For example, if we added fds: 1, 2, 99 then fMaxNumSockets becomes 100. &nbsp;If we then removed 99, <BR>
fMaxNumSockets becomes 99, not 3 as I would expect (and select expects according to the man page). <BR>
&nbsp;I am not sure how select is implemented under the hood, but I am guessing this might cause an <BR>
inefficiency as I suspect it tests all file descriptors between 0 and nfds &#8211;1;<BR>
<BR>
Regards,<BR>
Stuart<BR>
<BR>
</SPAN></FONT>

<BR>
- ------------------------------------------------------------------------------<BR>
Confidentiality Notice: The information contained in this transmission is legally privileged and confidential, intended only for the use of the individual(s) or entities named above. This email and any files transmitted with it are the property of Pelco. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any review, disclosure, copying, distribution, retention, or any action taken or omitted to be taken in reliance on it is prohibited and may be unlawful. If you receive this communication in error, please notify us immediately by telephone call to +1-559-292-1981 or forward the e-mail to administrator@pelco.com and then permanently delete the e-mail and destroy all soft and hard copies of the message and any attachments. Thank you for your cooperation. <BR>
- ------------------------------------------------------------------------------<BR>
</BODY>
</HTML>