channel和goroutine最直接的联合使用方式是生产-消费模式:

  1. package main
  2. import "time"
  3. func main() {
  4. outputs := make(chan string)
  5. go func(){
  6. for {
  7. outputs <- "goroutine 1\n";
  8. time.Sleep(time.Second)
  9. }
  10. }()
  11. go func() {
  12. for {
  13. outputs <- "goroutine 2\n";
  14. time.Sleep(time.Second)
  15. }
  16. }()
  17. for s := range outputs{
  18. print(s)
  19. }
  20. }

主线程会一直执行for s := range outputs这行代码,并输出其他goroutine写入的数据。用这样的方法,我们可以将一个很复杂的计算进行拆分,分配给不同的CPU内核去执行以提高总体执行效率。
这是一个很值得期待的事情.

分类: web

标签:   golang