初级会员
  • 第 70154 位会员
  • xhatt
  • 2021-10-26 11:26:29
  • Offline
  • 26 32

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 2021-11-15 16:43:11 评论了主题 深圳小破网站寻找兼职
    vx 1269146988 可写go
  • #1 @jinl80 感谢大佬回答,请问有相关的源码或者官方的解释能看看嘛
  • 改成这样,你才能让他阻塞,2个协程去抢同一把锁才会阻塞,你只有一个协程拿锁,不会阻塞的。 ``` go c := make(chan int) mutex := sync.Mutex{} go func(out chan<- int) { fmt.Println("product func") defer close(c) mutex.Lock() //加锁保证对通道的占用 for i:=0 ; i<= 5;i++{ out <- i } mutex.Unlock() fmt.Println("product func end") }(c) go func(in <-chan int ) { mutex.Lock() //加锁保证对通道的占用 fmt.Println("consumer function") for num := range in{ fmt.Println(num) } mutex.Unlock() fmt.Println("consumer function end") }(c) //把双向channel传入 单向channel作为参数的函数 中 time.Sleep(5*time.Second) ``` 这样你程序就只会打印 ``` product func consumer function ``` 然后5秒自己退出
  • 2021-10-27 10:11:58 评论了主题 如何从协程中获取返回值?
    ``` package main import ( "fmt" "time" ) func main() { msg_chan := make(chan []byte, 4) go func() { for { sm := []byte{1, 2, 3, 4} msg_chan <- sm time.Sleep(500 * time.Millisecond) } }() for item := range msg_chan { fmt.Println(item) } } ``` 写了个demo,测试没问题。你估计是业务代码导致的吧。这应该没毛病
  • 主线程挂了之后,程序会直接退出,你启动的两个协程还没来得及运行,程序已经退出了。在最后面加个sleep 或者用sync.WaitGroup