Language/go

goroutine 기본 구조

세모데 2018. 1. 2. 16:41

1. 기본구조

수행시 go 키워드를 붙여서 실행시키면 동시에 실행됨.



package main




import (


"fmt"

"time"


)



func t1() {


time.Sleep(time.Second * 2)


fmt.Println("t1 func...")


}


func main() {


go t1()


fmt.Println("this is main func...")

time.Sleep(time.Second * 3)

}



2. 테스트 예제


package main


import (

"fmt"

"net/http"

"os"

"time"

)


func responseTime(url string) {


start := time.Now()


res, err := http.Get(url)


if err != nil {

fmt.Println(err)

os.Exit(1)

}


defer res.Body.Close()


elapsed := time.Since(start).Seconds()


fmt.Printf("%s took %v seconds \n", url, elapsed)


}


func main() {

urls := make([]string, 3)

urls[0] = "https://www.naver.com/"

urls[1] = "https://www.google.com/"

urls[2] = "https://www.apple.com/"


for _, u := range urls {

go responseTime(u)

}


time.Sleep(time.Second * 5)


}