고루틴 클로저 관련
211
작성한 질문수 38
안녕하세요.
고루틴 클로저 설명중에
반복문 클로저는 일반적으로 즉시 실행,
But 고루틴 클로저는 가장 나중에 실행(반복문 종료후) 가 어떤 의미인지 잘 아해가 안되는데요.
for문이 끝나고 나서 고루틴이 실행된다는 의미이신가요?
고루틴 안에 sleep 넣어보니 고루틴들이 실행되는거 같아서요.
답변 부탁드립니다.
답변 1
0
아래 예제에서 실행되는 순서를 생각해보시면 될 것 같습니다.
func A( a, b chan struct{}){
<-a
fmt.Println("A()")
time.Sleep( time.Second)
close(b)
}
func B( a,b chan struct{}){
<-a
fmt.Println("B()")
close(b)
}
func C( a chan struct{}){
<-a
fmt.Println("C()")
}
func main(){
x := make(chan struct{})
y := make(chan struct{})
z := make(chan struct{})
go C(z)
go A(x, y)
go C(z)
go B(y, z)
go C(z)
close(x)
time.Sleep( 3 * time.Second)
}
A()
B()
C()
C()
C()
go C(z) -> z에 시그널이 들어 오면 동작
go A(x, y) -> x에 시그널이 들어 오면 y를 닫는다.-> y에 시그널 전달
go C(z) -> z에 시그널이 들어 오면 동작
go B(y, z) -> y에 시그널이 들어 오면 z를 닫는다. -> z에 시그널 전달
go C(z) -> z에 시그널이 들어 오면 동작
close(x) -> x를 닫는다. -> x에 시그널 전달
--> A -> B -> C -> C -> C
출처: https://fenderist.tistory.com/228 [Devman]
출처: https://fenderist.tistory.com/228 [Devman]
고 인터페이스 관련
0
69
2
Join함수 사용이유가 궁금합니다
0
54
1
vscode 설정
0
126
2
arm64
0
202
2
undefined 에러 : UndeclaredImportedName
0
343
1
godoc 에러 관련
0
206
1
package is not in std 오류
0
985
1
맵 예제 코드가 바이러스 검사에 걸려요
0
234
1
for 반복문에서 break와 continue 차이점
0
224
1
후치연산 관련 질문입니다.
0
197
1
package관리에 질문이 있습니다.
0
281
1
go channel 에제에서 질문이 있습니다.
0
193
1
golang 질문
0
310
1
재귀 함수 관련하여 질문이 있습니다.
0
346
1
atom 서비스 종료 관련
0
403
1
vscode 환경설정 업데이트 부탁드립니다
1
403
2
waitGroup.Done을 지연 시키는 방식
0
449
1
첫 번째 예제 질문있습니다.
0
263
1
2개씩 체크가 되는 이유가 궁금합니다.
0
328
1
go 표준 코드 컨벤션이 있나요?
0
825
1
slice에서 make 궁금한 게 있습니다.
1
262
1
import 관리는 어떻게 하나요?
0
317
1
개발환경설정 질문드립니다.
0
486
1
이것도 closure인가요?
0
238
1





