|
4 / 4 / 1
Регистрация: 24.01.2023
Сообщений: 20
|
||||||||||||||||
RAD XE3+ Проблемы с менеджером памяти при слишком частом обращении08.02.2023, 18:01. Показов 1414. Ответов 3
Напоролся на неожиданную проблему.
Пишу программу, в которой захватываются два потока видео (с двух видеокарт). Захват идёт через API, в котором на прибытие кадра приходит callback. Соответственно, у меня по прибытию кадра создаётся объект, который запихивается в TThreadList. Потом обрабатывается и удаляется. Так как два потока, то у меня 50 раз в секунду создаётся объект и 50 раз в секунду удаляется обработанный объект. Объектов в очереди относительно немного - порядка 1000. В чём проблема. Пока объекты только создаются (заполнение очереди) - всё отлично. Как только объекты начинают удаляться, то через некоторое время выпадает exception вида - access violation. Судя по стеку в момент exception - проблема возникает в момент создания нового объекта - то есть выглядит так, как будто система не может выделить ему память и всё рушится. Никакой закономерности найти не смог. Возникает такое ощущение, что если слишком часто создавать и удалять объекты, то менеджер памяти начинает сходить с ума. Никто не сталкивался с таким? Объекты крошечные, объявлены вот таким образом:
0
|
||||||||||||||||
| 08.02.2023, 18:01 | |
|
Ответы с готовыми решениями:
3
Проблемы с qtreewidget при частом добавлении айтемов Ошибка при обращении к памяти? |
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
||||||||||||
| 09.02.2023, 05:52 | ||||||||||||
|
Кем удаляется, в какой момент и т.п. По хорошему лучше конечно минимальный рабочий пример, где воспроизводится ошибка. Потому как по примерам кода созданные кадры вы пишете в
0
|
||||||||||||
|
Модератор
4149 / 2360 / 812
Регистрация: 15.11.2015
Сообщений: 9,462
|
|
| 09.02.2023, 09:18 | |
Сообщение было отмечено An_private как решение
Решение
Если callback идёт из драйвера, то эта процедура может работать в другом потоке, и одновременное обращение к одному и тому же объекту вызовет ошибку. Можно попробовать использовать критическую секцию при добавлении и удалении объектов. Только смущает, что добавляется в один список, а удаляется из другого. Как это?
0
|
|
|
4 / 4 / 1
Регистрация: 24.01.2023
Сообщений: 20
|
|||
| 09.02.2023, 09:46 [ТС] | |||
|
Дельфи сам определяет режим - если вы явно запускаете из вашего приложения другие потоки, то он переключается на потокобезопасный менеджер памяти. Но в моём случае использования callback'ов недостаточно для этого и менеджер работал не в потокобезопасном режиме. Оказывается, есть специальный флажок isMultiThread, который по умолчанию ставится самим дельфи. Но его можно поставить и ручками в FormCreate и тогда менеджер памяти принудительно переводится в потокобезопасный режим. Я это сделал и всё сразу заработало нормально (чьорт побьери, целый день угробил на эту проблему). Поэтому и выглядит, что это разные листы. Я постоянно использовал подобное решение во многопоточных приложениях. Но никак не ожидал, что дефолтный memory manager является not thread safe
2
|
|||
| 09.02.2023, 09:46 | |
|
Помогаю со студенческими работами здесь
4
проблемы с Sessions - при обращении из сети переменные сбрасываются... После отключения cdn проблемы с работой ssl при обращении к S3 хранилищу
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|