Sync

주의 반복문에서 고루틴을 돌리면 신기하게 결과물이 나올 때가 있습니다. 아래 코드를 실행했을 때의 결과는 무엇일까요? import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup for _, text := range []string{"a", "b", "c"} { wg.Add(1) go func() { defer wg.Done() fmt.Println(text) }() } wg.Wait() } 만약 a, b, c가 랜덤으로 출력 것이라 생각하신다면 틀렸습니다 결과는 아래와 같습니다. c c c 왜 이런 일이 이유는 루프문이 고루틴보다 먼저 끝나서 고루틴에서 사용할 수 있도록 메모리를 힙으로 옮겼기 때문입니다. 즉 for문이 먼저 끝나서 text의 값은 마지막 ..
DSeung
'Sync' 태그의 글 목록