docs: goroutine

This commit is contained in:
Shikong 2021-11-08 23:58:54 +08:00
parent 1419b92bc7
commit 6d9888b047
3 changed files with 88 additions and 0 deletions

View File

@ -0,0 +1,42 @@
package main
import (
"fmt"
"runtime"
"sync"
)
var wg = new(sync.WaitGroup)
func a() {
defer func() {
wg.Done()
}()
for i := 0; i < 10; i++ {
fmt.Printf("A: %d\n", i)
}
}
func b() {
defer func() {
wg.Done()
}()
for i := 0; i < 10; i++ {
fmt.Printf("B: %d\n", i)
}
}
func main() {
// goroutine 初始栈大小为2k
// 设置 最大 线程数
// 默认为 CPU 线程数
// 线程过多会增加 上下文切换负担
runtime.GOMAXPROCS(1)
wg.Add(2)
go a()
go b()
wg.Wait()
}

21
base/goroutine/main.go Normal file
View File

@ -0,0 +1,21 @@
package main
import (
"fmt"
"time"
)
func hello(i int) {
fmt.Println("hello:", i)
}
func main() {
for i := 0; i < 100; i++ {
// 开启一个单独的 goroutine 任务
go hello(i)
}
fmt.Println("main")
time.Sleep(1 * time.Millisecond)
// main 函数结束时 由 main 函数 启动的 goroutine 任务也随之结束
}

View File

@ -0,0 +1,25 @@
package main
import (
"fmt"
"sync"
)
var wg = new(sync.WaitGroup)
func hello(i int) {
defer wg.Done()
fmt.Println("hello:", i)
}
func main() {
for i := 0; i < 100; i++ {
// 开启一个单独的 goroutine 任务
wg.Add(1)
go hello(i)
}
fmt.Println("main")
// 等待所有线程结束
wg.Wait()
}