[GO]多任务的资源竞争问题

package main

import (
    "fmt"
    "time"
)

func Printer(s string)  {
    for _, data := range s {
        //fmt.Println(string(data))
        fmt.Printf("%c", data)
        time.Sleep(time.Second)
    }
}

func person1()  {
    Printer("hello")
}

func person2()  {
    Printer("world")
}

func main() {
    go person1()
    go person2()
    for true {

    }
}

这段代码执行的结果为

hweolrllodc

可以看到因为使用了并发它的打印是交叉了的,但是在实际的使用过程中,我们肯定是希望打印了person1的任务后再打印person2的任务,如何在使用并发的时候也能实现呢?下一篇,Channel的使用

posted @ 2018-09-19 09:16  蟒城贝勒爷  阅读(173)  评论(0编辑  收藏  举报