LoginSignup
0
0

More than 1 year has passed since last update.

Go言語 ゴルーチン

Last updated at Posted at 2022-04-07

ゴルーチン

ゴールーチンと呼ばれる、スレッドを用いて並行処理を行う機能。
関数に「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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0