github.com/maikovskiys/l1tasks@v0.0.0-20230927052451-6436d7687dc9/develop/dev07/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "sync" 6 ) 7 8 /* 9 Реализовать конкурентную запись данных в map. 10 */ 11 func main() { 12 wg := sync.WaitGroup{} 13 m := &sync.RWMutex{} 14 mapa := make(map[int]bool) 15 for i := 0; i <= 4; i++ { 16 worker := 1 + i 17 wg.Add(1) 18 go func(*sync.RWMutex, map[int]bool, int) { 19 defer wg.Done() 20 id := 0 21 for { 22 fmt.Printf("Worker № %+v recording in map\n", worker) 23 m.Lock() 24 mapa[id] = true 25 m.Unlock() 26 id++ 27 if len(mapa) == 50 { 28 return 29 } 30 } 31 }(m, mapa, worker) 32 } 33 wg.Wait() 34 fmt.Println(mapa) 35 fmt.Println("main end") 36 }