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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 100-процентная загрузка CPU 
:(
    Опции темы
srd
Дата 25.10.2005, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

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



У Рихтера:
Цитата

Процессы инертны Чтобы процесс что-нибудь выполнил, в нем нужно создать поток Именно потоки отвечаю за исполнение кодя, содержащегося в адресном про странстве процесса В принципе, один процесс может владеть несколькими потока ми, и тогда они "одновременно" исполняют код в адресном пространстве процесса.

Для этого каждый поток должен располагать собственным набором регистров про цессора и собственным стеком В каждом процессе есть минимум один поток. Если бы у процесса не было ни одного потока, ему нечего было бы делать на этом свете, и система автоматически уничтожила бы его вместе с выделенным ему адресным про странством.

Чтобы всс эти потоки работали, операционная система отводит каждому из них определенное процессорное время. Выделяя потокам отрезки времени (называемые квантами) по принципу карусели, она создает тем самым иллюзию одновременного выполненияпотоков




--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
DENNN
Дата 25.10.2005, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 3
Всего: 43



Под квантом понимается временной отрезок, в течении которого управление будет переданно процессу и не будет выполняться проверка о необходимости передачи управления другому процессу. Как расперделяется время медлу потоками внутри процесса - вопрос немножко другой. Неделимым может быть отрезок и в 2 кванта и более. Обычно квант - верменной промежуток, меньше которого квантовать время не отимально. Это все грубо и достаточно неточно, но как суме, так и сказал. ... smile
PM ICQ   Вверх
mr.DUDA
Дата 25.10.2005, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Почитал тут посты, возникло предложение (не пинайте ногами сильно): что мешает перерисовывать кадр только когда это надо ? Например, мышка не двигалась, объекты в сцене не изменили своё положение, эффекты "молчат" -- нафига рисовать "поверх" того же самого ? smile

З.Ы, можно простым способом сделать: глобальная статическая переменная типа HANDLE с каким-нибудь объектом синхронизации, и ждущий поток. Поток рендерит кадр, потом "засыпает" в WaitForSingleObject. Если другие потоки, к примеру, передвинули камеру или объект в сцене - они сигналят первому потоку, он просыпается и рендерит ещё один кадр smile.

Цитата(Tror @ 25.10.2005, 13:28)
Можно ли ограничивать fps каким то определённым
значением, а всё оставшееся время использовать для расчётов. И,
вообще, целесообразно ли исползовать многопоточность в графических
приложениях. Если что не так поправьте.

Именно это и получится, если сделать как я предложил. Сигналить-то можно с любой требуемой скоростью.


--------------------
user posted image
PM MAIL WWW   Вверх
Tror
Дата 25.10.2005, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

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



Даа smile, я тут посмотрю придётся мне немног попотеть, чтоб разобраться во всём том, что
здесь написали. Большое всем спасибо -- дали пищу для размышлений. Всё, пошёл разбираться. smile
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
maxim1000
Дата 25.10.2005, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



о распределении времени:
я просто представил себе два возможных способа распределения времени:
1. глобально между процессами (независимо от количества активных потоков) и внутри них уже свои локальные шедулеры, которые делят полученное время между потоками
2. просто между процессами

в первом случае от замораживания потока доля процесса в использовании процессора не меняется, значит, при замораживании одного из потоков, его время будет распределено между остальными потоками этого же процесса

во втором случае усыпление одного из потоков приведет к распределению его части процессорного времени между всеми потоками в системе, а значит к потокам нашего процесса попадет только часть

Цитата
Почитал тут посты, возникло предложение (не пинайте ногами сильно): что мешает перерисовывать кадр только когда это надо ? Например, мышка не двигалась, объекты в сцене не изменили своё положение, эффекты "молчат" -- нафига рисовать "поверх" того же самого ?

насколько я понимаю, речь идет именно о моментах, когда что-то меняется, например, летят ут... пули, чем чаще будем менять картинку, тем плавнее они будут лететь...
и если моментов, когда вообще ничего не меняется становится ощутимая часть, тогда стоит подумать о какой-то специальной обработке (т.е. отключении отрисовки) этой ситуации...
другой вопрос - а часто ли такие моменты встречаются?


--------------------
qqq
PM WWW   Вверх
DENNN
Дата 26.10.2005, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 3
Всего: 43



Цитата(mr @ 25.10.2005, 19:05)
Почитал тут посты, возникло предложение (не пинайте ногами сильно): что мешает перерисовывать кадр только когда это надо ?

Читаем внимательно пердыдущую страницу:
Цитата(DENNN @ 25.10.2005, 15:05)
сцена перерисовывается в двух случаях:
1)По требованию ОС перерисовать часть окна или все окно целиком.
2)Если изображение изменилось


PM ICQ   Вверх
Tror
Дата 26.10.2005, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

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



smile В общем разобрался я в чем тут дело. Оказывается весь сыр-бор из-за того как мы выбираем
сообщения из очереди. Если использовать PeekMessage, то в таскмане отображается
использование проца на 100%, если же использовать GetMessage, то всё в порядке. Но тут возникает проблемка: при использовании PeekMessage всё в норме, а при GetMessage рабочая область программы закрашивается тем что было до нее на экране(окна, десктоп и тд). Посмотрел
в win32sdk help, там в ремарках к PeekMessage написано только то что он не ждёт окончания обработки сообщения в отличие от GetMessage. Глубже мне не удалось разобраться ввиду отсутствия MSDN(но вроде обещали подогнать), а пользоваься им в онлайне нет возможности.
smile

То maxim1000:
С днём рождения smile

Это сообщение отредактировал(а) Tror - 26.10.2005, 21:01
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

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

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

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


 




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


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

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