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

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

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

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

cache = new(sync.Map)

Но что-то подсказывает, что второй вариант может вызвать состояние гонки, когда одна горутина будет читать, а другая в это время запустит очистку. Если так, то какое решение оптимально?
  • Вопрос задан
  • 278 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Go-разработчик с нуля
    8 месяцев
    Далее
  • Skillfactory
    Профессия Backend-разработчик на Go
    12 месяцев
    Далее
  • Хекслет
    GO-разработчик
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@rustler2000
погромист сикраш
Вот https://play.golang.org/p/GTEsPH28ykD. Естественно 19 строку можно в начало горутины поднять, чтобы барьеров по памяти не было много
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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