首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
// bulma/atomic_flag.go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ready atomic.Bool // 就绪标志(原子布尔值)
|
||||
var wg sync.WaitGroup
|
||||
|
||||
// 消费者goroutine:等待标志位变为true后执行
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
// 循环检测标志位,直到变为true(无锁,高效)
|
||||
for !ready.Load() {
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
fmt.Println("✅ 消费者检测到 ready=true,开始处理")
|
||||
}()
|
||||
|
||||
// 生产者goroutine:模拟初始化操作,完成后设置标志位
|
||||
time.Sleep(50 * time.Millisecond) // 模拟初始化耗时
|
||||
ready.Store(true)
|
||||
fmt.Println("🔧 生产者设置 ready=true")
|
||||
|
||||
wg.Wait()
|
||||
fmt.Println("所有操作执行完成")
|
||||
}
|
||||
Reference in New Issue
Block a user