Arno Garrels wrote: >>> What do you think? >> >> As stated above, by first opinion is simply to ignore older OS. > > That was my first idea as well, so yesterday I already implemented > simple timers into OverbyteIcsWndControl.pas (ignoring .NET > compatibility). It's currently part of TIcsWndControl and implemented > as TCollection/TCollectionItem.
This TCollection-implementation doesn't convince me any more, though it looked nice. Now I prefer a simple timer component that hasto be created at runtime and that must be passed a IcsWndControl as owner in constructor. TFtpCli as well as THttpCli could be adjusted in 2 minutes. As a result there won't be a timer-enabled ICS component but ICS would ship with a thread-safe timer that used base component's hidden window. What do you think? If that is too much overhead for all > classes derived from TIcsWndControl we will have to move the code to > a new timer-enabled class derived from TIcsWndControl. However having > this stuff in the base component makes life easier, I like it as is. > Downloadable here: > http://www.duodata.de/misc/delphi/IcsV6TimerStuff.zip (search for > define "USE_ICSTIMERS" in OverbyteIcsWndControl.pas) The ZIP-file > also includes a common, thread-safe timer component that registers in > the tool palette under FPiette. > >> Shouldn't we clearly ask the ICS community what OS they are using for >> their large scale servers ? Then we can better design the best >> solution. > > Agreed. > > > > Francois Piette wrote: >>> That's true, however it does not solve the main problem with timers >>> in ICS. The general problem with timers (beside the question which >>> window to use) is that they are a limited resource. >> >> As far as I know, timer are no more a limited resource sinceW2K. >> >>> If we want support >>> of "timer per instance" we have to take into account that: >>> >>> 1.) Win9x allows 32 timers systemwide only. >>> 2.) WinNT supports 16 timers per process only. >>> 3.) Maximum size of a thread's message queue is limited (default >>> 10000). >>> >>> In W2K and above it's possible to create thousands of timers (I >>> stopped testing at 10000 yesterday). However if we want support for >>> "timer per instance" in older OSs as well we have to emulate this >>> capability somehow. >> >> Is it really needed ? The problem will - IMO - occur only at server >> side and only when something large is implemented. And no one today >> would use anything below W2K for server. And if they want to use an >> older machine, maybe they would themself solve the problem provided >> ICS provide a mechanism to replace the [yet to be designed] buildin >> timer. >> >> >>> There are components around (like TTimerList of RX-Library) >>> promising to work around those limits. But they are slow. Such a >>> timer list utilizes a single Windows timer set to the shortest >>> interval of all registered timer-events. When the timer fires it >>> looks up and triggers registered timer-events as needed. The >>> procedure of adding/removing events is slow as well and may cause >>> delay if the timer interval must be reset. Also such a global timer >>> list must be thread-safe which slowed down performance again. If you >>> think we need such a 'polling beast' in order to work around limits >>> of older OSs, we should write a faster and smarter one that could >>> i.e. use an AVL-tree to manage its list of timer-events. >>> >>> What do you think? >> >> As stated above, by first opinion is simply to ignore older OS. >> Shouldn't we clearly ask the ICS community what OS they are using for >> their large scale servers ? Then we can better design the best >> solution. >> >> >> Contribute to the SSL Effort. Visit >> http://www.overbyte.be/eng/ssl.html -- >> [EMAIL PROTECTED] >> Author of ICS (Internet Component Suite, freeware) >> Author of MidWare (Multi-tier framework, freeware) >> http://www.overbyte.be -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be