I have a program that does the following:
-
Call webservice (there are many calls to the same web service)
-
Process the result of 1.
-
Insert result of 2. in a DB
So I think it should be better to do some multithreading. I think I can do it like this:
-
one thread is the master (let’s call it A)
-
it creates some thread which calls the webservices (let’s call it W)
-
when W has some results it sends it to A (or A detects that W has some stuff)
-
A sends the results to some computing thread (let’s call it C)
-
when C has some results it sends it to A (or A detects that C has some stuff)
-
A sends the results to some database thread (let’s call it D)
So sometimes C or D will wait for work to do.
With this technique I’ll be able to set the thread number for each task.
Can you please tell me how I can do that, maybe if there is any pattern.
EDIT : I added “some” instead of “a”, so I’ll create many thread for some time-consuming process, and maybe only one for the fastest.
It sounds to me like you could use the producer/consumer pattern. With .NET 4 this has become really simple to implement. Start a number of Tasks and use the
BlockingCollection<T>as a buffer between the tasks. Check out this post for details.