要点
- goroutine
- runtime.GOMAXPPROCS
- Channel select
- sync.mutex
- init
多线程
func task01() {
for ;; {
fmt.Println("task01")
}
}
func task02() {
for ;; {
fmt.Println("task02")
}
}
func main() {
go task01()
go task02()
time.Sleep(1 * time.Minute)
}
go func() {
fmt.Printf("\n Task3Start TimeNow: ",time.Now())
time.Sleep(2 * time.Second)
fmt.Printf("\n Task3End TimeNow: ",time.Now())
}()
- sync.WaitGroup
阻塞线程,可以阻塞住主线程使其等待子线程结束
wg.Add(1),wg.Done(wg.Add(-1)),wg.Wait()当wg不为0时阻塞住线程
func task1() {
fmt.Printf("\n Task1Start TimeNow: ",time.Now())
time.Sleep(1 * time.Second)
fmt.Printf("\n Task1End TimeNow: ",time.Now())
wg.Done()
}
func task2() {
fmt.Printf("\n Task2Start TimeNow: ",time.Now())
time.Sleep(2 * time.Second)
fmt.Printf("\n Task2End TimeNow: ",time.Now())
wg.Done()
}
func main() {
wg.Add(3)
fmt.Printf("\n CurTime: ",time.Now())
go task1()
go task2()
go func() {
fmt.Printf("\n Task3Start TimeNow: "