переменымик примерно у меня булевое значение из-за которого выполнение функций приостанавливается на одну секунду, это нормальная практика?
Или лучше использовать mutex?
Вопрос неясен
package main import ( "fmt" "time" ) var flag = false var MapUserData = make(map[int]string) func main() { go fOne("One1") go fOne("One2") fOne("One3") time.Sleep(3 * time.Second) fmt.Println("return 0") } func fOne(text string){ for flag { fmt.Println("pause", text) time.Sleep(1 * time.Second) } flag = true for i := 0; i < 4; i++{ MapUserData[i] = text } fmt.Println(text, MapUserData) flag = false }
Вот к примеру
Называется состояние гонки. У вас есть несколько "одновременных" потоков выполнения, которые читают\меняют "общий ресурс" (переменную). Из-за того, что это чтение\изменение происходит не атомарно возникают всякие неприятные моменты. Решается мьютексами или изменением структуры программы, чтобы она работала с использованием каналов
Значит всё же мютекс и каналы, хорошо, спасибо)
Обсуждают сегодня