Один поток — рендеринг или управление игровым блоком вокселей. Другой только что удалил его. Нарушение доступа?

Кажется, мне очень трудно создать динамическую систему управления чанками в многопоточной программе. У меня есть класс VDimensia, который представляет собой измерение, заполненное фрагментами вокселей, и один поток многопоточной программы занят рендерингом и обновлением вокселей. Моя проблема заключается в том, что другой поток предназначен для уничтожения чересстрочных вокселей, которые находятся слишком далеко, и он вызывает проблемы, когда удаляет чанк, когда другой поток находится в процессе создания и инициализации чанка. Мой код сейчас немного запутан, что со всеми проверками доступа, которые у меня есть, но я не могу найти способ не дать программе всплыть с каким-либо нарушением доступа. Есть ли способ использовать try catch, чтобы игнорировать нарушение и продолжить? Я уже пытался использовать __try __except, и он решил заблокировать поток, и я попытался установить опцию компилятора / EHa, и это буквально ничего не делает. Я использую Visual Studio 2012 C ++. Я все еще изучаю C ++ и по сей день, поэтому любая помощь приветствуется.

0

Решение

Возможно, вы захотите взглянуть на решение для подсчета ссылок, такое как std :: shared_ptr / std :: weak_ptr, и просто позволить потоку, который обновляет вокселы, делать свое дело; когда они закончат и разыграют воксель, он может уйти.

http://en.cppreference.com/w/cpp/memory/shared_ptr

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]