[Interest] how to run 21 threads concurrently

Alex Malyushytskyy alexmalvtk at gmail.com
Fri Oct 5 00:34:54 CEST 2012


Why do you need  Threads[th].cancel();?
According to documentation not only "the QFuture returned by
QtConcurrent::run() does not support canceling,...", but I do not see
any reason you could want to do this.

Alex



On Thu, Oct 4, 2012 at 6:25 AM, André Somers <andre at familiesomers.nl> wrote:
> 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é
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest



More information about the Interest mailing list