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