循环打印 fish dag cat

package test

import (
    "testing"
    "time"
)

func TestLimitRoutines(t *testing.T) {
    //3个协程 循环打印 fish cat dog 每个打印100次
    fishChan := make(chan struct{}, 0)
    catChan := make(chan struct{}, 0)
    dogChan := make(chan struct{}, 0)

    go func() {
        for i := 0; i < 100; i++ {
            <-fishChan
            t.Log("fish")
            catChan <- struct{}{}
        }
    }()
    go func() {
        for i := 0; i < 100; i++ {
            <-catChan
            t.Log("cat")
            dogChan <- struct{}{}
        }
    }()
    count := 0
    go func() {
        for i := 0; i < 100; i++ {
            <-dogChan
            t.Log("dog")
            count++
            fishChan <- struct{}{}
        }
    }()
    fishChan <- struct{}{}
    time.Sleep(time.Second * 10)
    t.Log(count)
}

results matching ""

    No results matching ""