ゴルーチン
ゴールーチンと呼ばれる、スレッドを用いて並行処理を行う機能。
関数に「go」を付加することで、その関数は並行的に処理される。
Code
// 素数をチェックする関数
func checkPrime(number int) bool {
isPrime := true
if number == 0 || number == 1 {
return false
} else {
for i := 2; i <= number/2; i++ {
if number%i == 0 {
isPrime = false
break
}
}
if isPrime == true {
return true
}
}
return false
}
// 素数を生成する関数
func primeRoutine1() {
i := 0
for {
i += 1
if checkPrime(i) {
fmt.Printf("PrimeRoutine1 ☆ : %d\n", i)
}
}
}
// 素数を生成する関数
func primeRoutine2() {
i := 0
for {
i += 1
if checkPrime(i) {
fmt.Printf("PrimeRoutine2 ◇ : %d\n", i)
}
}
}
// 素数を生成する関数
func primeRoutine3() {
i := 0
for {
i += 1
if checkPrime(i) {
fmt.Printf("PrimeRoutine3 ◯ : %d\n", i)
}
}
}
// 素数の生成を非同期処理
func main() {
// ゴルーチンによる非同期処理
go primeRoutine1()
go primeRoutine2()
go primeRoutine3()
for {
// mainを駆動させ続けるための無限ループ
}
}
Output Sample
~ $ go build main.go
~ $ ./main
~ 省略 ~
PrimeRoutine3 ◯ : 493211
PrimeRoutine3 ◯ : 493217
PrimeRoutine2 ◇ : 492799
PrimeRoutine1 ☆ : 493211
PrimeRoutine3 ◯ : 493219
PrimeRoutine1 ☆ : 493217
PrimeRoutine2 ◇ : 492839
PrimeRoutine3 ◯ : 493231
PrimeRoutine1 ☆ : 493219
PrimeRoutine2 ◇ : 492853
PrimeRoutine1 ☆ : 493231
PrimeRoutine3 ◯ : 493243
PrimeRoutine2 ◇ : 492871
PrimeRoutine1 ☆ : 493243
PrimeRoutine3 ◯ : 493249
PrimeRoutine2 ◇ : 492883
PrimeRoutine1 ☆ : 493249
PrimeRoutine3 ◯ : 493277
PrimeRoutine2 ◇ : 492893
PrimeRoutine3 ◯ : 493279
PrimeRoutine1 ☆ : 493277
~ 省略 ~
GitHub