|
9 / 9 / 5
Регистрация: 21.09.2015
Сообщений: 103
|
|||||||||||
Синхронизация потоков04.04.2016, 11:29. Показов 5408. Ответов 39
Метки нет (Все метки)
Есть класс
Но как видно из функции NewFrame - она работает с основным потоком. Как в данном случае правильно использовать метод Synchronize?
0
|
|||||||||||
| 04.04.2016, 11:29 | |
|
Ответы с готовыми решениями:
39
Синхронизация потоков Синхронизация потоков: семафоры Синхронизация потоков. Семафоры |
|
9 / 9 / 5
Регистрация: 21.09.2015
Сообщений: 103
|
|
| 05.04.2016, 15:31 [ТС] | |
|
0
|
|
|
9 / 9 / 5
Регистрация: 21.09.2015
Сообщений: 103
|
||||||||||||
| 05.04.2016, 16:07 [ТС] | ||||||||||||
0
|
||||||||||||
|
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
|
|
| 05.04.2016, 16:20 | |
|
0
|
|
|
9 / 9 / 5
Регистрация: 21.09.2015
Сообщений: 103
|
|
| 05.04.2016, 16:23 [ТС] | |
|
0
|
|
|
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
|
|
| 05.04.2016, 16:27 | |
|
ну. код кидай снова)
0
|
|
|
9 / 9 / 5
Регистрация: 21.09.2015
Сообщений: 103
|
||||||
| 06.04.2016, 07:25 [ТС] | ||||||
|
Selot, Avazart,
0
|
||||||
|
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
|
|
| 06.04.2016, 09:57 | |
|
bitmap объявлена в коде 2 раза. 77 и 112 строки. в 112 объявляешь локальную переменную bitmap, ее видно только в пределах функции newframe, ты в нее как раз и записываешь. А функция func берет глобальный bitmap из строки 77, а он пустой.
Попробуй для начала из 112 строки убрать HBITMAP
0
|
|
|
9 / 9 / 5
Регистрация: 21.09.2015
Сообщений: 103
|
|||||||
| 06.04.2016, 10:18 [ТС] | |||||||
|
Мне кажется, что проблема в строке:
0
|
|||||||
|
|
||
| 06.04.2016, 11:45 | ||
|
Теперь слишком дофига кода
.Сделай более простой тестовый пример без длл и левых классов. Добавлено через 1 минуту
0
|
||
|
9 / 9 / 5
Регистрация: 21.09.2015
Сообщений: 103
|
||||||
| 06.04.2016, 12:05 [ТС] | ||||||
|
Avazart,
В общем вычитал, что объекты Canvas могут использоваться вне Synchronize метода, необходимо только блокировать их перед применением и освобождать после, для этого используются методы Lock() и Unlock(). Это частично помогло. Осталось только как-то синхронизировать работу с основным потоком этой строчки:
1
|
||||||
|
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
|
|
| 06.04.2016, 12:50 | |
|
А что если в классе CFrameBufferObserver сделать паблик-очередь std::queue<HBITMAP> queueHandle; в нее пихать хэндлы queueHandle.enqueue(bitmap); затем слать сообщение форме из потока PostMessageA(Form1->Handle, WM_UPDATE_BITMAP, NULL, NULL);, на форме ловить сообщение, лезть в очередь и извлекать свеженький хендл Image1->Picture->Bitmap->Handle = queueHandle.dequeue(); queueHandle.pop(); ?
0
|
|
|
9 / 9 / 5
Регистрация: 21.09.2015
Сообщений: 103
|
||||||
| 06.04.2016, 16:13 [ТС] | ||||||
|
Решил обойтись без потока, но история та же..
Суть в том, что по нажатию кнопки происходит ожидание получения нового кадра, которое выполнено в виде бесконечного цикла. А получение нового кадра осуществляется с помощью метода класса CFrameBufferObserver. Если же выполнять ещё какие-либо действия на основной форме - появляется ошибка, поскольку цикл не был закончен. Заканчивать цикл ожидания получения нового кадра, после этого совершать какие-либо действия, а потом запускать цикл вновь - такой вариант не подходит, поскольку до начала выполнения цикла выполняются ещё некоторые действия, которые занимают значительное время. Как лучше поступить?
0
|
||||||
|
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
|
|
| 06.04.2016, 17:40 | |
|
Сначала отладить рисование картинки без всяких доп.потоков и лишних действий. Потом вечный цикл вынести в отдельный поток, вместе с классом CFrameBufferObserver. Сделать чтоб этот класс возвращал в поток "HBITMAP bitmap" и из потока вызывать Synchronize. Вроде логично
1
|
|
|
|
||||||||||||||||
| 06.04.2016, 19:20 | ||||||||||||||||
Кстати код УГ там явные утечки и глупости типа
1
|
||||||||||||||||
|
9 / 9 / 5
Регистрация: 21.09.2015
Сообщений: 103
|
|||
| 07.04.2016, 11:55 [ТС] | |||
|
Добавлено через 58 минут В общем получилось обойтись без класса CFrameBufferObserver. Теперь проблем нет. Selot, Avazart, благодарю за ответы!
0
|
|||
|
0 / 0 / 1
Регистрация: 15.02.2013
Сообщений: 27
|
||||||
| 04.01.2017, 19:24 | ||||||
|
в потоке обсчитывал bitmap, анализировал яркость в цикле.
проблема была в том, что без потоков всё ок, а в потоке, в процессе выполнения (рандомно от раза к разу) битмап становился пустым. помогла вставка
![]() Не по теме: таким *** как я
0
|
||||||
| 04.01.2017, 19:24 | |
|
Класс Thread, потоки синхронизация потоков и т.д Синхронизация потоков с++ Мьютекс и синхронизация Синхронизация мюьтекса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|