[Interest] how to run 21 threads concurrently

André Somers andre at familiesomers.nl
Thu Oct 4 15:25:57 CEST 2012


Op 4-10-2012 15:21, Sujan Dasmahapatra schreef:
>
> I am not able to run my threads concurrently please help.
> How can I  run 21 threads concurrently and get the job done by 8 cpus 
> what I have in my machine.
>
> I am doing like this
> [code]
>
> std::vector<QFuture<void> > Threads;
> QFuture<void> Th;
>
> for(int z=0; z<21; z++)
> {
> Th = QtConcurrent::run(this,&UnrstParser,z);
> Thraeds.push_back(Th);
> }
> for(int th=0; th<Threads.size(); th++)
> {
>  if(Threads[th].isRunning())
> Threads[th].waitForFinished();
> Threads[th].cancel();
> }
> Threads.clear();
> [/code]
>
> With this first few threads are probably running but not all the 
> threads. As it's supposed to generate some files by each thread which 
> is not being generated. Please help.
>
>
QtConcurrent will use as many threads as it deems useful, based on the 
system you are running on. Unless you have a 21 core system, it is 
probably not useful to run 21 threads your your task.
However, QThreadPool has methods to change how many threads are 
considdered useful, so you should look into using that class.

André




More information about the Interest mailing list