Bjørnar Nielsen wrote:
> I do lengthy operations in another context/thread than the thread
> where the servers are. I'm just looking for better IO-performance.

IO-performance would increase only on multi-processor systems.
Multi-threading on single-processor systems is just to achieve
non-blocking behavior. One disadvantage of having both listening
and client socket(s) in the same thread is that the listening
socket may be blocked for while and as a result the connecting
client may get a "server busy" error.    
However since your server already uses worker threads for non-IO 
tasks it takes already load from the IO-thread on multi-CPU systems
and also helps to avoid blocking the listening socket for too long.
Finally it doesn't matter much whether a task is running in a certain
thread/CPU context as long as the load is scheduled to all CPUs equably.

> Currently I have one http-server and a https-server which is working
> in the same thread. The http-server have 1200 connections and the
> Https-server have 150 connections open. In total the servers serve
> about 100 requests pr second. In near future the traffic could
> increase. As I understand, I could benefit from spreading the
> http-server-work in a few more threads.
> 
> - I don't use critical sections now, all communications between the
> threads is done with posting messages. I think using a few more
> threads and just use windows messages to do this would be best. Is
> this right? How can I achieve this? 

Some blocking synchronization will most likely be required when you 
run an ICS server and his clients in multiple threads. *This might be
counter-productive*. I think you have to try out what's best 
for an individual project.
  
> - I saw that there is content-coding (Z-lib) in HttpCli, is it
> working? 

Good question, I saw the comments as well, don't know.

--
Arno Garrels [TeamICS]
http://www.overbyte.be/eng/overbyte/teamics.html


> In the source of httpsrv it says it is not working. Is there
> much work needed for it to work? Would I gain much performance with
> this feature enabled on the server?   
> 
> Regards Bjørnar
> 
> 
> Bjørnar Nielsen wrote:
>> I'm using PostThreadMessage to send messages to my thread, but I want
>> to interrupt messages that is intended to go to a WSocket-component.
>> 
>> The reason is that I'm trying to make my HTTPSrv multithreaded. My
>> idea was to intercept Do_FD_ACCEPT, pause the socket, send a custom
>> message to another thread where I attach the socket and continue with
>> Do_FD_ACCEPT. Is this a good way to achieve this? Or has anyone here
>> achieved this in another way?
> 
> I think it is not easily possible like that, since the THttpServer is
> not derived from TWSocketServer. IMO, it's easier to either apply a
> similar method as shown in demo "ThrdSrv" (V5) or to use/write a
> multi-threaded WSocketServer-class and to change three or four source
> lines in the THttpServer so that FWSocketServer becomes
> multi-threaded. 
> You should also consider to just move lengthy tasks into worker
> threads, for instance like it's practised in the TFtpServer for
> calculating MD5 checksums from big files (search for
> TClientProcessingThread). I prefer the latter, perhaps in
> conjunction with a little thread pool.
> 
> --
> Arno Garrels [TeamICS]
> http://www.overbyte.be/eng/overbyte/teamics.html
> 
> 
> 
>> 
>> Regards Bjørnar
>> 
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] On Behalf Of Arno Garrels
>> Sent: 19. mars 2008 10:52
>> To: ICS support mailing
>> Subject: Re: [twsocket] Cathing window messages for HttpSrv
>> 
>> Bjørnar Nielsen wrote:
>>> I'm using the THttpSrv in a thread, and want to catch the windows
>>> message to the server. How is this possible?
>> 
>> It's safe to use PostThreadMessage() for those custom messages,
>> however you must check for msg.Hwnd = 0 in your message pump
>> otherwise you risk conflicts with the message-ID numbers ICS v6
>> uses internally.
>> 
>>> 
>>> My messagepump int the execute of the thread is like this:
>>> 
>>> while(!Terminated && GetMessage(&msg, 0, 0, 0))
>>> 
>>> {
>>> 
>>>    switch(msg.message)
>>> 
>>>    {
>>> 
>>>        case WM_CUSTOM_SET_SERVER_SETTINGS:
>>> 
>> [..]
>> 
>>> How can I catch FD_ACCEPT and other messages and get the receiving
>>> control for this message? I Use ICS V6 and don't understand how the
>>> TIcsWndHandler works. Does anyone have examples for this?
>> 
>> You could override the WndProc() procedure of a component and trap
>> FMsg_WM_ASYNCSELECT. Have a look at TCustomWSocket.WMASyncSelect()
>> for an example of how to catch FD_ACCEPT.
>> 
>> --
>> Arno Garrels [TeamICS]
>> http://www.overbyte.be/eng/overbyte/teamics.html
>> 
>> 
>> 
>> 
>> 
>> 
>>> 
>>> 
>>> 
>>> 
>>> Regards Bjørnar
>>> 
>>> 
>>> No virus found in this outgoing message.
>>> Checked by AVG.
>>> Version: 7.5.519 / Virus Database: 269.21.7/1332 - Release Date:
>>> 17.03.2008 10:48
>> --
>> To unsubscribe or change your settings for TWSocket mailing list
>> please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
>> Visit our website at http://www.overbyte.be
>> 
>> No virus found in this incoming message.
>> Checked by AVG.
>> Version: 7.5.519 / Virus Database: 269.21.7/1334 - Release Date:
>> 18.03.2008 20:52
>> 
>> 
>> No virus found in this outgoing message.
>> Checked by AVG.
>> Version: 7.5.519 / Virus Database: 269.22.0/1341 - Release Date:
>> 24.03.2008 15:03
> --
> To unsubscribe or change your settings for TWSocket mailing list
> please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
> Visit our website at http://www.overbyte.be
> 
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.519 / Virus Database: 269.22.0/1341 - Release Date:
> 24.03.2008 15:03 
> 
> 
> No virus found in this outgoing message.
> Checked by AVG.
> Version: 7.5.519 / Virus Database: 269.22.0/1341 - Release Date:
> 24.03.2008 15:03 
-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to