go 루틴은 쓰레드로 작동시킨다.
go funcname() |
[링크 : http://golang.site/go/article/21-Go-루틴-goroutine]
왜.. 생소하지 -ㅁ-?
package main import ( "fmt" "time" ) func say(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } } func main() { go say("world") say("hello") } |
[링크 : https://go.dev/tour/concurrency/1]
고루틴은 parent에 의해서 죽일수 없다고 하는데
[링크 : https://www.reddit.com/r/golang/comments/4kpv6x/why_a_parent_goroutine_doesnt_kill_its_child_and/]
그래서 channel을 이용해서 해당 채널을 close 하면 닫는 식으로 간접 제어 하기도 하는 듯
package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup wg.Add(1) ch := make(chan string) go func() { for { channel, ok := <-ch if !ok { fmt.Println("Shut Down") defer wg.Done() return } fmt.Println(channel) } }() ch <- "Start" ch <- "Processing" ch <- "Finishing" close(ch) wg.Wait() } |
[링크 : https://www.golangprograms.com/how-to-kill-execution-of-goroutine.html]
'Programming > golang' 카테고리의 다른 글
golang make와 new (0) | 2022.09.06 |
---|---|
golang defer 와 panic(), recover() (0) | 2022.09.06 |
golang https server (0) | 2022.09.05 |
golang 쿠키 (0) | 2022.09.02 |
golang http redirect (0) | 2022.09.02 |