当前位置: 首页> 游戏> 游戏 > 短视频制作软件_网页设计形考作业2_市场调研的方法_成都seo技术

短视频制作软件_网页设计形考作业2_市场调研的方法_成都seo技术

时间:2025/8/8 5:10:41来源:https://blog.csdn.net/qq_40374604/article/details/146402619 浏览次数:2次
短视频制作软件_网页设计形考作业2_市场调研的方法_成都seo技术

文章目录

    • 无缓冲的 channel
    • 有缓冲的 channel
    • 创建一个无缓冲的 channel 并在 select 语句中使用
    • goroutine 和 channel 生产者-消费者模型

无缓冲的 channel

无缓冲的 channel 在发送和接收操作时会阻塞,直到另一端准备好。

ch := make(chan int)

有缓冲的 channel

带缓冲的 channel 在缓冲区未满时,发送操作不会阻塞;在缓冲区有数据时,接收操作不会阻塞。

ch := make(chan int, 10) // 缓冲区大小为 10

创建一个无缓冲的 channel 并在 select 语句中使用

可以在 select 语句中使用 channel。

func main() {ch := make(chan int)go func() {ch <- 42}()select {case val := <-ch:fmt.Println(val)}
}
  • 使用 make 函数创建 channel。
  • 可以创建无缓冲或带缓冲的 channel。
  • 可以通过方向操作符 <- 来限制 channel 的发送或接收能力。
  • channel 常用于 goroutine 之间的通信和同步。

goroutine 和 channel 生产者-消费者模型

不论 1:n 还是 n:1 或是 n:m,都可以使用 sync.WaitGroup 下面这种模型来操作。

package mainimport ("fmt""sync""time"
)func producer(id int, jobs chan<- int, wg *sync.WaitGroup) {defer wg.Done()for i := 0; i < 5; i++ {time.Sleep(time.Millisecond * 100)jobs <- ifmt.Printf("Producer %d produced %d\n", id, i)}
}func consumer(id int, jobs <-chan int, wg *sync.WaitGroup) {defer wg.Done()for job := range jobs {time.Sleep(time.Millisecond * 500)fmt.Printf("Consumer %d consumed %d\n", id, job)}
}func main() {jobs := make(chan int, 10)var wg sync.WaitGroupconst numProducers = 3const numConsumers = 2wg.Add(numProducers)for i := 0; i < numProducers; i++ {go producer(i, jobs, &wg)}wg.Add(numConsumers)for i := 0; i < numConsumers; i++ {go consumer(i, jobs, &wg)}wg.Wait()close(jobs)
}
关键字:短视频制作软件_网页设计形考作业2_市场调研的方法_成都seo技术

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: