|
Кормпилятор
|
|||||||||||
Отрисовка в разных потоках26.11.2011, 02:02. Показов 6909. Ответов 21
Метки нет (Все метки)
Господа, давайте делиться опытом, какой код наиболее грамотный.
Суть вопроса: В справке написано - нельзя, но как говорится, если очень хочется - то можно. Опытным путём я умудрился понять, что в потоках рисует более чем отлично. Делаю так: создаю окно, в окне скрин, гружу парочку прозрачных спрайтов или создаю их в имаджах и переделываю в спрайт(прогу уже выкладывал тут). Создаю поток, в котором эти спрайты в бесконечном цикле многократно рисуются. Пользую функции: DisplaySprite DisplayTransparentSprite DisplayTranslucentSprite В основной программе сканирую клавиатуру, мышку и ВНИМАНИЕ!!! очень осторожно сканирую события таким образом, чтобы в момент отрисови в потоке, не вызывалась функция WindowEvent(). Так вот вопрос как при таком раскладе сделать так, чтобы нажав кнопку Win можно было выйти в винду ( ReleaseMouse(1) ) и соответственно войти обратно без последствий( у меня либо появляется серый экран взаместо рисуемой области, либо мыша приобретает форму весов и при клике на окно не заходит обратно). Функцию WaitWindowEvent() я по понятным причинам не рассматриваю т.к. она блокирует программу, а мне нужно, чтобы и в основной программе(не в потоке) мог что-то ещё обрабатывать. В потоке у меня примерно так:
невозможно - убедиться в этом. С потоками работал мало и многого не представляю, как использовать семафоры и мьютексы пока не допёр, не очень хочется юзать какие-либо суперсложные механизмы... Доп информация: Если убрать Delay в 36 строчке - прога заработает, но опять же, как тогда в основной программе "что-либо делать"? Нужно, чтобы она и через такие промежутки могла нормально среагировать.
0
|
|||||||||||
| 26.11.2011, 02:02 | |
|
Ответы с готовыми решениями:
21
Отрисовка в потоках Метод выполнить в 11 разных потоках, соответственно для разных входных массивов Циклы обработки сообщений разных форм в разных потоках |
|
|
||
| 27.11.2011, 20:24 | ||
|
При работе с потоками FPS практически мало зависит от кол-ва спрайтов на экране. Т.е при 1 спрайте ( в нижнем правом углу) значение 79, при всех спрайтах ( курсор в верхнем левом углу) значение FPS = 64. А если код в одном потоке, то зависимость страшная - при полной нагрузке спрайтами FPS=240, а при 1 спрайте FPS=2010(!), т.е разница почти в 10 раз. Но в любом случае в однопоточном режиме работает гораздо быстрее, это факт.
1
|
||
|
Кормпилятор
|
|
| 27.11.2011, 21:46 [ТС] | |
|
Pro_grammer, спасибо за ценную информацию.
Чем больше тестов, тем более объективную информацию мы сможем извлечь о работе этих двух программ. Я изначально знал, что у второй FPS будет больше, правда не думал, что настолько. Прога - далеко не идеал, может быть кто-то сможет её улучшить на благо всего pure сообщества. Цель программы: показать принцип, использующийся при отрисовке в отдельном потоке, ну и показать, что это не так уж невозможно как нам гласит справка.
0
|
|
| 27.11.2011, 21:46 | |
|
Изменение разных элементов вектора в разных потоках даёт отличный от join() результат, нежели при detach() ShellExecute в разных потоках Перменные в разных потоках 2 цикла в разных потоках QTimer в разных потоках Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|