반응형
golang 채널이란?
1. 데이터를 주고 받는 통로.
2. make를 통해 미리 생성.
3. 채널 연산자 <- 를 통해 데이터를 보내고 받는다.
보통 고루틴들 사이에 데이터를 주고 받을때 상대편이 준비 될때까지 채널에서 대기 -> 별도의 lock을 걸지 않고
데이터를 동기화 하는데 사용 한다.
채널 만들기
1. ch := make(chan int) // 정수형 채널이 생성.
채널 송수신
1. 채널로 데이터를 보낼 때
채널 <- 데이터
ch <- 123
2. 채널로 부터 데이터를 받는다.
변수로 받을수도 있고 아래와 같은 형태로도 사용.
<- ch // go에서 , error := 블라블라 등 처럼 로 생각하면 된다.
특징
송&수신자가 서로를 기다리는 특성이 있다.(매우 중요)
go 채널 버퍼링
1. unbuffered channel
2. buffered channel
채널 파라미터
함수의 파라미터에 사용 가능 함.
1) 송신 파라미터
p chan<-int
2) 수신 파라미터
p <- chan int
채널 닫기
닫으면 송신은 불가하나 수신은 가능!
채널 select문
복수 채널들을 기다리면서 준비된(데이터를 보내온) 채널을 실행하는 기능.
동시에 올 경우는 go 런타임이 랜덤으로 골라서 진행.
참고 사이트 : http://golang.site/go/article/22-Go-%EC%B1%84%EB%84%90
소스코딩을 통해 더욱 더 자세하게 알아봐야 함!
반응형
'Language > go lang' 카테고리의 다른 글
http dump (0) | 2018.08.30 |
---|---|
용어 - multiplexer (0) | 2018.03.16 |
golang code 구조 살펴보기 (0) | 2018.03.15 |
golang + github Permanently added the RSA host key (0) | 2018.03.05 |
golang + github ignore setting (0) | 2018.03.05 |