VGrabko
@VGrabko
Golang, Php, Js

Потокобезопасность и указатели. Нужны блокировки?

Гуглил.

Допустим есть некий код который отдаёт указатель
func Db(name string) *DB{
	rw.RLock()
	_, ok :=  database[name]
	rw.RUnlock()
	if !ok {
		newDb(name)
		Db(name)
	}
	return database[name]
}


и функция для работы со структурой
func (d *DB) Set(key string, value interface{}) bool {
	log.Println("cache.Set: ",key, " Value: ", value)
	d.RW.Lock()
	defer d.RW.Unlock()
	_, ok := d.Storage[key]
	if ok {
		log.Println("cache.Set: ",key, " exist")
		return false
	}
	d.Storage[key] = value
	return true
}


Нужны ли блокировки в последней?
  • Вопрос задан
  • 485 просмотров
Решения вопроса 1
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Maps в Go не потокобезопасны, поэтому да, нужны локи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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