Задать вопрос

Работа с указателями в golang и блокировки?

Добрый день.
У меня есть ссылочная переменная var MaxData *int , которую увеличивают с каждым разом.
func new_data(){
    *MaxData = *MaxData +1
    internal_max_data=*MaxData // вообщем как-то хочу внутренней переменной присвоить значение MaxData и потом работать в функции с internal_max_data 
}


На самом деле с *MaxData могут работать в горутинах много функций new_data()
и вот какой вопрос возникает. Теоретически можно предположить, что одна горутина увеличила MaxData,а потом вторая тоже квеличила, а потом первая присвоила internal_max_data MaxData, которая увеличена уже на 2 ...и вторая горутина в это время тоже взяла это же значение.
Ну судя из этого- программа "ляпнет". Вообщем как-то надо что-ли заблокировать MaxData на этот промежуток времени. И вообще -как с указателями работать? а то у меня эроры везде.
  • Вопрос задан
  • 416 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Go-разработчик с нуля
    8 месяцев
    Далее
  • Skillfactory
    Профессия Backend-разработчик на Go
    12 месяцев
    Далее
  • Хекслет
    GO-разработчик
    6 месяцев
    Далее
  • Stepik
    Thank Go! Golang на практике
    1 неделя
    Далее
  • Нетология
    Go-разработчик с нуля
    9 месяцев
    Далее
  • Яндекс Практикум
    Продвинутый Go-разработчик
    6 месяцев
    Далее
  • OTUS
    Golang Developer. Professional
    5 месяцев
    Далее
  • Stepik
    Основы Golang
    2 недели
    Далее
Решения вопроса 3
mututunus
@mututunus
Backend developer (Python, Golang)
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
Для структур по сложнее используй golang.org/pkg/sync/#RWMutex
Ответ написан
Комментировать
@TwoRS Автор вопроса
Спасибо большое.
Здесь то же самое, но с примером ru.stackoverflow.com/questions/440356
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SilentFl
Ха-ха, Рома _внезапно_ понял что он пишет конкурентный код 7a31d6fa6fde4a01be658a734845aecc.gif
Ответ написан
Ваш ответ на вопрос

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

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