Задать вопрос
VGrabko
@VGrabko
Golang, Php, Js

Возможно ли повесить блокировку sync на структуру?

Я когда то видел что можно сделать блокировку на чтение/запись прям в структуре и тогда переменная которая будет иметь тип структуры всегда будет потокобезопасной. Как это сделать?
  • Вопрос задан
  • 127 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@Vaavaan
Не в Go.
В Go ты это должен явно проверять.

Можешь повесить Mutex внутрь, но проверять его все равно нужно. Внутри рядом с данными он, возможно, удобно хранится. Только и всего. Он автоматически работать не будет.

Можешь использовать lock-free идеологию. Тогда ничего сохранять не нужно. А сами данные и будут блокирующими элементами. Но и в этом случае нужно явно проверять их. Это пакет atomic в Go.

А вот если ты положишь структуру в канал, то тут да, тут ты получишь потокобезопасность. Но это не совсем то, что ты описал.
Ответ написан
Комментировать
class MyClass
{
Lock _innerLockObject
SomeType _value
    public void SetSomeProp (SomeType value)
{
_innerLockObject.Lock()
_value = value;
_innerLockObject.Unlock() //defer
}

public SomeType GetSomeProp()
{
SomeType result;
_innerLockObject.Lock()
result = _value;
_innerLockObject.Unlock() //defer
return result;
}
}


Очень утрировано.
Вы об этом?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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