美文网首页
面试题:三个线程实现交替顺序打印123 - golang 实现

面试题:三个线程实现交替顺序打印123 - golang 实现

作者: 冥王星的卧底 | 来源:发表于2022-01-06 14:14 被阅读0次
package main

import (
    "fmt"
    "sync"
    "time"
)

func main()  {
    mu := make(map[string]int)
    var wg sync.WaitGroup
    wg.Add(1)
    go func() {
        for {
            time.Sleep(1 * time.Second)
            if _, ok := mu["g1"]; ok {
                fmt.Print(1)
                delete(mu, "g1")
                mu["g2"] = 1
            }
        }
    }()
    go func() {
        for {
            time.Sleep(1 * time.Second)
            if _, ok := mu["g2"]; ok {
                fmt.Print(2)
                delete(mu, "g2")
                mu["g3"] = 1
            }
        }
    }()
    go func() {
        for {
            time.Sleep(1 * time.Second)
            if _, ok := mu["g3"]; ok {
                fmt.Print(3)
                delete(mu, "g3")
                mu["g1"] = 1
            }
        }
    }()

    mu["g1"] = 1
    wg.Wait()
}

相关文章

网友评论

      本文标题:面试题:三个线程实现交替顺序打印123 - golang 实现

      本文链接:https://www.haomeiwen.com/subject/wlxrcrtx.html