![]() |
|
Модераторы: bsa |
![]()
|
|
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: нет Всего: 4 |
Здравствуйте!
Возник вопрос, как устанговить приоритет потоку созданному с помошью _beginthread. У меня основной поток отрисовывает сцену, создается еще поток, который изменяет координаты моделей и создает еще поток поиска правильного хода. Все работает, но только проц занят всегда на 100 %, и я так понимаю главный поток лагает, и сцена отрисовывается с тормозами, поможет ли установка приоритета потоку моделей ниже главного потока, пусть немного дольше ищет правильный ход, но лижбы не лагала сцена. Подскажите пожалуйсто команду установки приоритета, в гугле нашел, но там если поток был создан с помощью CreateThread, а что же делать с _beginthread? Заранее благодарен -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 2 Всего: 50 |
Аналогично
|
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
HANDLE hThread = (HANDLE)_beginthreadex(...);
SetThreadPriority(hThread, ...); Добавлено через 1 минуту и 23 секунды или внутри того потока: SetThreadPriority(GetCurrentThread(), ...); |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Vetos, думаю, основная проблема не в приоритетах. просто нужно чтобы потоки "считальщики" иногда немного отдыхали. На однопроцессорной системе такая схема вообще смысла не имеет, так как на синхронизации потоков ты потеряешь много времени. Думаю, делать нужно так: пока рисуется кадр N, кад N+1 считается вторым потоком и ставится в очередь на отрисовку, затем ждет освобождения очереди...
|
|||
|
||||
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: нет Всего: 4 |
bsa, кадр за кадром отрисовывается все норм, опенгл так и работает, тут дело не в отрисовке, если функция поиска не работает, т.е. поток не запускался, то все летает, когда запускается поток поиска( там создается дерево ходов и выбирается с максимальной оценкой) то главное окно( прорисовка, передвижение мыши и т.д ) начинает подтормаживать, незнаю может я неправильно задал вопрос но как тогда замедлить поиск, чтоб обрабатывалось окно а не поток поиска,способа кроме как расстановки приоритетов я не наблюдаю, сейчас проверю как будет.
А еще мне в любом случае нужно создавать поток, т.к. функция поиска забирает примерно сек4-5, и если делать без потока то игра будет выглядеть нелепо, зависая на моменты поиска! Это сообщение отредактировал(а) Vetos - 20.6.2010, 15:53 -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: нет Всего: 4 |
586, спасибо за код.
Вообщем так, поигрался я с приоритетами, получается что функция поиска в потоке вовсе не тормозит главный поток, оказалось что поток перемещения моделей - узкое место в моей программе, bsa, ты был прав, я сразу тебя не понял. Спасибо всем! Небольшое руководство по приоритетам: Для установки приоритета потоку нам нужно знать его номер(хендл). Функция SetThreadPriority( хендл потока, приоритет потока ) Как получить хендл потока писал 586. Вот сами константы приоритетов: THREAD_PRIORITY_IDLE – фоновый THREAD_PRIORITY_LOWEST – низкий THREAD_PRIORITY_BELOW_NORMAL – ниже среднего THREAD_PRIORITY_NORMAL – средний THREAD_PRIORITY_ABOVE_NORMAL – выше среднего THREAD_PRIORITY_HIGHEST – высокий THREAD_PRIORITY_TIME_CRITICAL – критический (реального времени) -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
|||
|
||||
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: нет Всего: 4 |
bsa, ок спс
-------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |