공부/개발

go 프로그래밍 - 2.채널 time.After()

티오비 2020. 11. 12. 10:11

복수 혹은 단수 채널을 기다리고 있을 때 time.After()를 사용하여 타임아웃 채널을 만들고, 이를 select 문에 추가하면 지정된 시간이 경과한 후 타임마웃하는 기능을 구현할 수 있습니다.

 

이 경우에는 6으로 설정해놨기 때문에 6초 전에 sleep이 끝나는 run1이 출력되시는걸 확인하실 수 있습니다. 

package main

import "time"

func main() {

	ch1 := make(chan bool)
	ch2 := make(chan bool)

	go func(done chan bool) {

		time.Sleep(5 * time.Second)
		done <- true
	}(ch1)

	go func(done chan bool) {

		time.Sleep(10 * time.Second)
		done <- true
	}(ch2)

	//time.After()는 입력 파라미터에 지정된 시간이 지나면 Ready 되는 채널 리턴

	timeoutChan := time.After(6 * time.Second)
	select {

	case <-ch1:
		println("run1")
	case <-ch2:
		println("run2")
	case <-timeoutChan: //select 문 내 타임아웃 체크
		println("timeout")
	}
}
output : run1

 

'공부 > 개발' 카테고리의 다른 글

주식 자동매매 프로그램 - 1. AWS 인스턴스 생성  (0) 2020.11.27
go 프로그래밍 - main 에러를 내다  (0) 2020.11.16
GO 프로그래밍 - 기초 1편 환경 설정  (0) 2020.11.11
swap  (0) 2018.01.10
상속  (0) 2017.12.27