MegaCraZy6
@MegaCraZy6
Юзерь

Как определить приоритет потока?

Написал небольшой самодельный 3д рендер, и он работает очень медленно, вся его работа происходит в отдельном потоке, как ускорить работу этого потока чтоб он использовал все ресурсы процессора?

Создавал поток вот так
CreateThread(0,0,&ThreadProc,0,0,thread);
            SetThreadPriority(thread,HIGH_PRIORITY_CLASS);
  • Вопрос задан
  • 357 просмотров
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
как ускорить работу этого потока чтоб он использовал все ресурсы процессора?

Повышение приоритета не ускорит работу потока который занимается вычислениями, но понизит отзывчивость всех остальных потоков.
Чтобы ускорить нужно сначала понять что именно тормозит, а чтобы это понять нужно профилировать.
А уж когда станет понятно -- тогда и думать, что делать -- менять алгоритм, распараллеливать, использовать SIMD или что-нибудь ещё.
Ответ написан
petermzg
@petermzg
Самый лучший программист
Ну только если

CreateThread(0,0,&ThreadProc,0,0,thread);
SetThreadPriority(thread,HIGH_PRIORITY_CLASS);

В первом случае thread это указатель на область памяти куда вернется threadID, а во втором случае требуется указатель на HANDLE созданного потока. Правильнее:
HANDLE ht = CreateThread(0,0,&ThreadProc,0,0,thread);
SetThreadPriority(ht, HIGH_PRIORITY_CLASS);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы