@UntitledNikname

Как работать с конкурентным доступом к одной ячейке памяти?

Маленький чат (для самообучения) на GO. В пакете "server" есть "map[string]net.Conn" где хранятся все активные каналы.
Пустой канал я удаляю из памяти сразу же как оттуда выйдет последний пользователь.
В ходе тестирования заметил что 2 разных потока.. один пытается удалить пустой канал а второй пытается записать туда новое соединение.
Не понятно как с этим правильно работать..
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
bitniks
@bitniks
Go/PHP/Symfony developer
Используйте мьютексы при конкурентной работе c map
https://gobyexample.com/mutexes
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Klars
Mutexes
Наглядный график с кодом https://golangbot.com/mutex/
+ обязательно для ридеров и врайтеров использовать RLock and RUnlock (блокировка на чтение значения или на запись)
очень полезно
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы