Programming/golang2022. 9. 6. 12:48

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
Posted by 구차니