摘要:
执行的结果 主协程和子协程近乎是同时执行,但是主协程因为有了管道的阻塞所以一直都不会执行打印 子协程在执行过自己的循环之后才会对管道进行一个写值,这时主协程一旦看到管道里有值就会立刻执行下面的程序 阅读全文
摘要:
goroutine运行在相同的地址空间,因此访问共享内存必须 做好同步。goroutine奉行通过通信来共享内存,而不是共享内存通信 它跟map一样,使用make来创建,它是一个引用 ,而不是值传递 make(chan Type, capacity) channel <- value //发送val 阅读全文
摘要:
这段代码执行的结果为 可以看到因为使用了并发它的打印是交叉了的,但是在实际的使用过程中,我们肯定是希望打印了person1的任务后再打印person2的任务,如何在使用并发的时候也能实现呢?下一篇,Channel的使用 阅读全文
摘要:
会发现打印结果里有大片的1或者0 那如果指定两个核呢 那么结果会很不一样 可以看得出来并发的时间片出让明显快了很多 那么4核 虽然看不出来啥, 阅读全文
摘要:
这里执行的结果为 但是如果在defer fmt.Println("cccccccccccc")的下面加一句return呢? 那么执行结果就是 return的意思是终止此函数,那么在终止前又有一个defer所以才会打印ccccccccc,那么dddddddddddd自然不会被执行 下面我们的goexi 阅读全文
摘要:
Gosched:让出CPU时间片 Goexit:退出当前的协程 GOMAXPROCS:设置使用最大的CPU数量(哇,牛逼了。。。) 如果程序写在这样的话,那么子协程是永远都不会被执行的,因为在go中向来都先执行主协程,这里主协程的循环明显比子协程要短,那么子协程永远都不会被执行 所以需要主协程让出时 阅读全文