@UntitledNikname

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

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

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

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