@danforth

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

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

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

cache = new(sync.Map)

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

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

Войти через центр авторизации
Похожие вопросы
21 июн. 2024, в 22:53
1000 руб./за проект
21 июн. 2024, в 22:12
5000 руб./за проект
21 июн. 2024, в 21:41
20000 руб./за проект