Система мониторинга в Go для обнаружения проблем параллелизма работает через детектор гонки (race detector). 13 Он встроен в цепочку инструментов Go и основан на библиотеке времени выполнения ThreadSanitizer. 1
Принцип работы: при запуске тестов или компиляции добавляется флаг --race, после чего компилятор следит за тем, как происходит доступ к различным местам в памяти программы. 3 Если компилятор обнаруживает гонку, он сообщает об этом, печатая ворнинг. 3
Детектор сконструирован так, что он в состоянии обнаружить гонки только при фактическом запуске кода. 1 Поэтому важно осуществлять запуск двоичных файлов приложения при реалистичных рабочих нагрузках. 1
Также для диагностики проблем параллелизма в Go можно использовать инструмент go tool trace, который при запуске программы визуализирует все события рантайма в удобной форме. 2