12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package main
- import (
- "fmt"
- "runtime"
- "sync"
- )
- func main() {
- // wg用来等待程序完成
- var wg sync.WaitGroup
- // 分配一个逻辑处理器给调度器使用
- runtime.GOMAXPROCS(2)
- // 计数加2,表示要等待两个goroutine
- wg.Add(2)
- func() {
- fmt.Println("hello")
- }()
- // 创建两个goroutine
- fmt.Println("Create Goroutines")
- go printPrime("A", &wg)
- go printPrime("B", &wg)
- // 等待goroutine结束
- fmt.Println("Waiting To Finish")
- wg.Wait()
- fmt.Println("Terminating Program")
- }
- // printPrime 显示5000以内的素数值
- func printPrime(prefix string, wg *sync.WaitGroup) {
- // 在函数退出时调用Done来通知main函数工作已经完成
- defer wg.Done()
- next:
- for outer := 2; outer < 5000; outer++ {
- for inner := 2; inner < outer; inner++ {
- if outer%inner == 0 {
- continue next
- }
- }
- fmt.Printf("%s:%d\n", prefix, outer)
- }
- fmt.Println("Completed", prefix)
- }
|