У меня есть ошибка безопасности потоков где-то в довольно большом наборе кода. Он воспроизводится как случайный сбой, просто прокручивая в моем CATiledLayer
в течение нескольких секунд в симуляторе и разрешимый путем блокировки моего кода рисования в один поток (что не идеально, поскольку CATiledLayer спроектирован так, чтобы быть многопоточным, а мой рисунок код достаточно медленный, чтобы в ней нуждался).Проблема безопасности отладки нитей на iOS
Как я могу отладить проблему безопасности потоков? Я подозреваю, что где-то в моем коде лениво извлекает (и кэширует) данные, которые рисуются, но это не сильно сужает его.
Я прочитал руководство по программированию параллелизма, но не вижу ничего, что говорит об отладке, оно просто говорит о том, как структурировать ваш код.
Заменить «код для ленивого извлечения (и кеширования) данных, которые рисуются», с более простым кодом, который просто закручивается на некоторое время и возвращает статическое изображение? –
Данные составляют пару гигабайт векторных данных (карт). Я не могу хранить все это в ОЗУ, и он даже не поместился бы на устройстве iOS вообще, если бы это был растровый образ вместо вектора. –
Ему не нужно возвращать фактические данные; это должен быть метод * simple *, который возвращает фиктивные данные (в идеале беря примерно столько же времени/процессор, сколько и возвращает «реальные» данные), чтобы увидеть, является ли это проблемой в исходном методе. –