Notice
Recent Posts
Recent Comments
Link
투케이2K
40. (Go Lang) [Mac Os] Go 문법 : Go 채널 (Channel) 사용해 Go 루틴 작업 수행 완료 확인 및 채널 응답 메시지 확인 본문
Go Lang (Go 언어)
40. (Go Lang) [Mac Os] Go 문법 : Go 채널 (Channel) 사용해 Go 루틴 작업 수행 완료 확인 및 채널 응답 메시지 확인
투케이2K 2024. 2. 22. 08:30[개발 환경 설정]
개발 언어 : Go
[소스 코드]
package main
import "fmt"
func main() {
// ---------------------------------------------------
// [기본 설명]
// ---------------------------------------------------
// Go 채널은 그 채널을 통하여 데이타를 주고 받는 통로이며, 채널은 make() 함수를 통해 미리 생성되어야 합니다
// ---------------------------------------------------
// Go 채널은 주로 Go 루틴(go routine) 들 사이 데이터를 주고 받는데 사용되며, 상대편이 준비될 때까지 채널에서 대기함으로써 별도의 lock을 걸지 않고 데이터를 동기화하는데 사용됩니다
// ---------------------------------------------------
// Go 채널은 채널 연산자 <- 을 통해 데이터를 보내고 받습니다
// ---------------------------------------------------
// Go 채널은 수신자와 송신자가 서로를 기다리는 속성때문에, Go루틴이 끝날 때까지 기다리는 기능을 구현할 수 있습니다
// ---------------------------------------------------
// 익명함수를 사용한 한 Go 루틴에서 어떤 작업이 실행되고 있을 때, 메인루틴은 <-done 에서 계속 수신하며 대기하고 있습니다
// ---------------------------------------------------
// [Bool 형 채널을 생성]
done := make(chan bool)
go func() {
for i := 0; i < 10; i++ {
fmt.Println("for - ", i)
}
done <- true // 작업 완료 채널에 true 전달
}()
// [위의 Go루틴이 끝날 때까지 대기]
<-done
// [로그 출력]
fmt.Println("")
fmt.Println("----------------------------------------------")
fmt.Println("[로그 출력 수행] : 채널 수신 완료")
fmt.Println("----------------------------------------------")
fmt.Println("")
}
[결과 출력]
반응형
'Go Lang (Go 언어)' 카테고리의 다른 글
Comments