Работа с указателями в 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 на этот промежуток времени. И вообще -как с указателями работать? а то у меня эроры везде.
  • Вопрос задан
  • 409 просмотров
Решения вопроса 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
Ответ написан
Ваш ответ на вопрос

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

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