golang 채널에 대해 알아보자!

2018. 5. 11. 17:56Language/go lang

반응형


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