随笔分类 - go并发
与go并发编程相关的知识
摘要:一,代码: // 入口函数 func main() { lock:=sync.Mutex{} go func() { lock.Lock() defer lock.Unlock() for i:=1; i<=5; i++ { time.Sleep(time.Millisecond) fmt.Prin
阅读全文
摘要:一,代码: //实现单例的数据结构 type SingleObject struct { } //最终获得的单例对象 var instance *SingleObject //变量one是一个sync.Once的实例 var one sync.Once //方法:得到单例对象 func getIns
阅读全文
摘要:一,代码: // 入口函数 func main() { //无缓冲的channel ch:=make(chan int) go func() { //<-ch for i:=1; i<=5; i++ { time.Sleep(time.Millisecond) fmt.Println(i) } ch
阅读全文
摘要:一,代码: // 入口函数 func main() { ch:=make(chan int,1) go func() { <-ch for i:=1; i<=5; i++ { time.Sleep(time.Millisecond) fmt.Println(i) } }() go func() {
阅读全文
摘要:一,怎么用channel实现锁定? 只有1个缓冲区的channel, 写入数据类似于加锁, 读出数据类似于释放锁 二,代码例子: // 入口函数 func main() { //创建channel对象 ch:=make(chan int,1) //协程1 go func() { ch <- 0 fo
阅读全文
摘要:一,空select语句:会报死锁 代码: // 入口函数 func main() { select{} } 运行结果: $ go run main.go fatal error: all goroutines are asleep - deadlock! goroutine 1 [select (n
阅读全文
摘要:一,并发时不使用channel,直接访问变量(共享内存) 代码: // 入口函数 func main() { //共享访问的切片 var ints []int var wg sync.WaitGroup //定义协程的数量 n:=10000 //定义wg的数量 wg.Add(n) //创建指定数量的
阅读全文
浙公网安备 33010602011771号