Hello,

I've set up a C++ Server that has several types of jobs that it performs.
Some of these are very quick lookups that require virtually no processing
time. Others can take up to several hours of intense cpu processing to
complete. I am trying to make the service 'nonblocking' in the sense that
those small processes can always return quickly. At the same time, i want to
have the ability to run several (predefined number) of these large jobs
concurrently with new big jobs simply going into a waiting queue. The way my
system is set up currently, for some calls you dont know how long it will
take. If the job has been done before, it just returns the precomputed
results (quickly), but if it had not been done, it does the heavy duty
processing at that time (can take hours).

>From experimenting with TThreadedServer, it seems it just keeps spinning off
new threads to handle each request. If there are too many of these long
jobs, it can potentially bring down the whole server if a bunch of them get
requested around the same time. This server is always responsive, but very
prone to abuse.

The threadpool server makes sure i never kill my machine, however, once it
has the predefined number of threads running, it stops responding to new
requests, or rather just sits on them until one of the big jobs completes.

I've been looking at the Nonblocking server, but with the lack of
documentation, can't figure out if it will do what i want -- always respond,
while not killing my machine.

Can anyone shed any light on whether the nonblocking cpp server can do what
i want? If so, how do use it? If not, can anyone recommend a different
solution?

Thanks,
andrei

Reply via email to