On Sat, 10 Jan 2009 07:32:43 +0300, yes <y...@no.com> wrote:


What does this code do? It looks like a ThreadPool use case but I might be wrong.


I tried to recursively make an object distribute its calculations.
The calculations should take at least a minute.


Hm... I guess I understand now, you need a task parallelization, right?

In order to do this, you usually separate the task into several independent 
sub-tasks, put into a queue and wait until it is finished.

For example, we have a list of files to download from remote server. For each 
file, we create a new connection and retrieve it independently (and, possibly, 
out of order):

import tango.core.ThreadPool;

void execute()
{
   auto pool = new ThreadPool!(string)(10); // create a thread pool with 10 
threads
   string[] fileList = loadFileList();
   foreach (string filePath; fileList) {
       pool.append(&download, filePath);   // append the task
   }

   pool.finish(); // wait until all the tasks complete
}

void download(string fileName)
{
   // ...
}

In this example, I create a lot of threads (more than hardware runs 
concurrently) because the CPU is not a bottleneck.
You may experience different results in different CPU workaload, though.

Hope that helps.

Reply via email to