data.Lock()
data.ipToMac = data.getDataFromMT()
data.Unlock()
или так
ipToMac := data.getDataFromMT()
data.Lock()
data.ipToMac = ipToMac
data.Unlock()
ipToMac = map[string]LineOfData{}
Или вообще mutex.Lock() ввести внутрь data.getDataFromMT() и там перед конкретными обращениями его использовать?
Но там цикл ... и он не должен быть медленным.
Мне кажется странным перекладывать ответственность за консистетность данных на внешнего наблюдателя. Ведь всё и так лежит внутри объекта data. Почему он сам не может обновить собственное же поле? То есть методом без параметров: data.updateDataFromMT() Но я ненастоящий гофер. Может быть тут в вас принято иначе)
А я начинающий, поэтому вот и на распутье. Но мысль понял и она была полезной. Хотя вопрос был немного в другом.
Обсуждают сегодня