Ядра ЦП не используются должным образом при использовании QThreads

Использование: C++ (MinGW) , Qt4.7.4 , Vista ( OS), intel core2vPro

Мне нужно точно так же обработать 2 огромных файла. Итак, я хотел бы вызвать процедуру обработки из 2 отдельных потоков для 2 отдельных файлов. Поток GUI не делает ничего сложного; просто отображает метку и запускает цикл обработки событий для проверки условий завершения потока и выхода из основного приложения соответственно. Я ожидал, что это будет использовать два ядра (intel core2) примерно одинаково, но, наоборот, я вижу из диспетчера задач, что одно из ядер активно используется, а другое — нет (хотя и не каждый раз, когда я запускаю код); также время, необходимое для обработки 2 файлов, намного больше, чем время, необходимое для обработки одного файла (я думал, что оно должно быть равно или немного больше, но это почти равно обработке 2 файлов один за другим в непоточном применение). Могу ли я каким-то образом заставить потоки использовать ядра, которые я укажу?

QThread* ptrThread1=new QThread;
QThread* ptrThread2=new QThread;
ProcessTimeConsuming* ptrPTC1=new ProcessTimeConsuming();
ProcessTimeConsuming* ptrPTC2=new ProcessTimeConsuming();

ptrPTC1->moveToThread(ptrThread1);
ptrPTC2->moveToThread(ptrThread2);

//make connections to specify what to do when processing ends, threads terminate etc
//display some label to give an idea that the code is in execution

ptrThread1->start();
ptrThread2->start(); //i want this thread to be executed in the core other than the one used above

ptrQApplication->exec(); //GUI event loop for label display and signal-slot monitoring
6
задан ustulation 26 March 2012 в 13:06
поделиться