Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> _beginthread, установка приоритета 
V
    Опции темы
Vetos
Дата 20.6.2010, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



Здравствуйте!
Возник вопрос, как устанговить приоритет потоку созданному с помошью _beginthread. У меня основной поток отрисовывает сцену, создается еще поток, который изменяет координаты моделей и создает еще поток поиска правильного хода. Все работает, но только проц занят всегда на 100 %, и я так понимаю главный поток лагает, и сцена отрисовывается с тормозами, поможет ли установка приоритета потоку моделей ниже главного потока, пусть немного дольше ищет правильный ход, но лижбы не лагала сцена. Подскажите пожалуйсто команду установки приоритета, в гугле нашел, но там если поток был создан с помощью CreateThread, а что же делать с _beginthread?
Заранее благодарен


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
Alca
Дата 20.6.2010, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Аналогично


--------------------
PM WWW ICQ Skype Jabber   Вверх
586
Дата 20.6.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 8
Всего: 146



HANDLE hThread = (HANDLE)_beginthreadex(...);
SetThreadPriority(hThread, ...);

Добавлено через 1 минуту и 23 секунды
или внутри того потока:
SetThreadPriority(GetCurrentThread(), ...);
PM   Вверх
bsa
Дата 20.6.2010, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Vetos, думаю, основная проблема не в приоритетах. просто нужно чтобы потоки "считальщики"  иногда немного отдыхали. На однопроцессорной системе такая схема вообще смысла не имеет, так как на синхронизации потоков ты потеряешь много времени. Думаю, делать нужно так: пока рисуется кадр N, кад N+1 считается вторым потоком и ставится в очередь на отрисовку, затем ждет освобождения очереди...
PM   Вверх
Vetos
Дата 20.6.2010, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



bsa, кадр за кадром отрисовывается все норм, опенгл так и работает, тут дело не в отрисовке, если функция поиска не работает, т.е. поток не запускался, то все летает, когда запускается поток поиска( там создается дерево ходов и выбирается с максимальной оценкой) то главное окно( прорисовка, передвижение мыши и т.д ) начинает подтормаживать, незнаю может я неправильно задал вопрос но как тогда замедлить поиск, чтоб обрабатывалось окно а не поток поиска,способа кроме как расстановки приоритетов я не наблюдаю, сейчас проверю как будет.
А еще мне в любом случае нужно создавать поток, т.к. функция поиска забирает примерно сек4-5, и если делать без потока то игра будет выглядеть нелепо, зависая на моменты поиска!

Это сообщение отредактировал(а) Vetos - 20.6.2010, 15:53


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
Vetos
Дата 20.6.2010, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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 
PM MAIL ICQ   Вверх
bsa
Дата 20.6.2010, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
Vetos
Дата 20.6.2010, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



bsa, ок спс


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.