"고루틴"의 두 판 사이의 차이

11번째 줄: 11번째 줄:
import "time"
import "time"


func foo(from string) {
func say(s string) {
for i := 1; i <= 3; i++ {
for i := 1; i <= 5; i++ {
fmt.Printf("from %s #%d\n", from, i)
time.Sleep(100 * time.Millisecond)
time.Sleep(100*time.Millisecond)
fmt.Printf("%s%d\n", s, i)
}
}
}
}


func main() {
func main() {
foo("직접")
go say("고루틴")
go foo("고루틴")
say("직접")
foo("직접2")
time.Sleep(1*time.Second)
}
}
</source>
</source>
<source lang='console'>
<source lang='console'>
$ go run goroutine.go  
$ go run goroutine.go  
from 직접 #1
고루틴1
from 직접 #2
직접1
from 직접 #3
직접2
from 직접2 #1
고루틴2
from 고루틴 #1
고루틴3
from 고루틴 #2
직접3
from 직접2 #2
직접4
from 직접2 #3
고루틴4
from 고루틴 #3
고루틴5
직접5
</source>
</source>



2018년 6월 18일 (월) 13:40 판

1 개요

Goroutine
고루틴
  • 다른 함수 또는 메소드들을 병렬적으로 실행하는 함수 또는 메소드

2 예제

goroutine.go
package main
import "fmt"
import "time"

func say(s string) {
	for i := 1; i <= 5; i++ {
		time.Sleep(100 * time.Millisecond)
		fmt.Printf("%s%d\n", s, i)
	}
}

func main() {
	go say("고루틴")
	say("직접")
}
$ go run goroutine.go 
고루틴1
직접1
직접2
고루틴2
고루틴3
직접3
직접4
고루틴4
고루틴5
직접5

3 같이 보기

4 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}