Многопоточный процесс записи данных в один файл может стать проблемой, которая закончится беспорядочным содержимым файла. Лучше синхронизировать процесс записи данных в файл с помощью использования Mutex или какого-то другого инструмента для синхронизации горутин. В таком случае только одна горутина за раз сможет записывать что-то в файл. В данной инструкции показано, как сделать надежную запись в файл из нескольких горутин.

Записываем данные в файл из нескольких горутин

1. Создайте файл syncwrite.go со следующим содержимым:

Форум Гоферов

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Go на Форум

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК Go в Telegram

2. Запустите код через go run syncwrite.go в главном терминале;
3. Проверьте содержимое созданного файла sample.file:

запись в файл из нескольких горутин

Код из примера создает Writer с помощью Mutex, которая встраивает Writer (os.File в данном случае) и каждый вызов записи данных блокирует Mutex для избежания одновременных процессов записи в файл. После завершения операции записи, примитива Mutex освобождает и другая горутина может начать запись данных в файл.

 

Понравилась статья?

Поддержи наш проект, чтобы мы могли создать больше хорошего контента!