Выбор ответа Senior Производительность и тестирование обновлено

Как поймать гонку данных

Вопрос

Тест иногда падает со странными значениями в общем словаре. Каким инструментом поймать гонку данных?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Thread Sanitizer (TSan) в схеме. Thread Sanitizer отслеживает обращения к памяти из разных потоков без синхронизации и сообщает о гонке с обоими стеками.

Варианты ответа

  1. Main Thread Checker
  2. Thread Sanitizer (TSan) в схемеправильный ответ
  3. Address Sanitizer в схеме
  4. Instruments: Leaks

Разбор

Thread Sanitizer отслеживает обращения к памяти из разных потоков без синхронизации и сообщает о гонке с обоими стеками. Main Thread Checker ловит только вызовы UI API не с главного потока. Address Sanitizer ищет выходы за границы и use-after-free. Leaks про утечки. TSan замедляет выполнение в разы, поэтому его включают в отдельном прогоне CI. Режим Swift 6 ловит многие гонки ещё при компиляции.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.