main.go 968 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package main
  2. import (
  3. "fmt"
  4. "runtime"
  5. "sync"
  6. )
  7. func main() {
  8. // wg用来等待程序完成
  9. var wg sync.WaitGroup
  10. // 分配一个逻辑处理器给调度器使用
  11. runtime.GOMAXPROCS(2)
  12. // 计数加2,表示要等待两个goroutine
  13. wg.Add(2)
  14. func() {
  15. fmt.Println("hello")
  16. }()
  17. // 创建两个goroutine
  18. fmt.Println("Create Goroutines")
  19. go printPrime("A", &wg)
  20. go printPrime("B", &wg)
  21. // 等待goroutine结束
  22. fmt.Println("Waiting To Finish")
  23. wg.Wait()
  24. fmt.Println("Terminating Program")
  25. }
  26. // printPrime 显示5000以内的素数值
  27. func printPrime(prefix string, wg *sync.WaitGroup) {
  28. // 在函数退出时调用Done来通知main函数工作已经完成
  29. defer wg.Done()
  30. next:
  31. for outer := 2; outer < 5000; outer++ {
  32. for inner := 2; inner < outer; inner++ {
  33. if outer%inner == 0 {
  34. continue next
  35. }
  36. }
  37. fmt.Printf("%s:%d\n", prefix, outer)
  38. }
  39. fmt.Println("Completed", prefix)
  40. }