object splitting in multiple threads
yes
yes at no.com
Fri Jan 9 21:18:55 PST 2009
Does Phobos also do threadpools?
Somehow I liked the idea of an Object like agent smith, just duplicate yourself when the task is too big. ( ^_^ )
>
>
> 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.
>
More information about the Digitalmars-d-learn
mailing list