Задать вопрос
@danforth

Как очистить sync.Map?

Как правильно очистить sync.Map в Go?

В голову пришло два варианта:
cache.Range(func(key, _ interface{}) bool {
		cache.Delete(key)
		return true
	})

cache = new(sync.Map)

Но что-то подсказывает, что второй вариант может вызвать состояние гонки, когда одна горутина будет читать, а другая в это время запустит очистку. Если так, то какое решение оптимально?
  • Вопрос задан
  • 268 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@rustler2000
погромист сикраш
Вот https://play.golang.org/p/GTEsPH28ykD. Естественно 19 строку можно в начало горутины поднять, чтобы барьеров по памяти не было много
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы