说两个概念你应该自己就能写出来了: 1.闭包 示例代码: func main() { a := 1 go fun(){ a ++ }() select{} } 说明: main函数里定义了一个变量a,新起的goroutine中并没有定义变量a但却可以直接使用a,这就是一个闭包的使用。根据你说描述的背景,你可以定义一个a, b c, d四个goroutine都可以访问到的变量(使用闭包),建议类型定义为int32/uint32/int64/uint64,原因:与第二个概念有关。 2.原子操作atmoic 原子操作由系统保证变量线程安全性,效率比锁快,具体可自行查阅相关资料。在你给出的背景中,推荐使用CAS(compare and swap)操作 atomic.CompareAndSwapInt32 atomic.CompareAndSwapUint32 atomic.CompareAndSwapInt64 atomic.CompareAndSwapUint64 atomic包为标准库包:sync/atomic 如果你对上述两个概念有所掌握,相信自己写出来是分分钟的事情。
go func(task_status []int) { sm.Tsp(task_status) //这里是import进来的,怎么实时共享啊 fmt.Println("aaa",fornum) for v := range c { fornum++ fmt.Println("go1,",v) } wg.Done() }(task_status)
2,348
社区成员
923
社区内容
加载中
试试用AI创作助手写篇文章吧