介绍下go的chan,chan可以做什么
题目来源: 字节跳动
答案:
1.如果说goroutine 是Go语言的并发体的话,那么chan就是它们之间的通信机制,一个channel是一个通信系统,它可以让一个goroutine通过它给另一个goroutine发送值消息,每个channel都有一个特定的类型,也就是channels可发送数据的类型。
2.任务定时:与timer结合,实现超时控制,实现定期执行某些任务。
3.通知作用:经常是关闭某个channel或者向channel发送一个元素,使得接收channel的那一方知道此消息,进而做一些其他的操作。
4.解耦生产方和消费方:降低消费者和生产者之间的耦合度。
5.控制并发数:有时需要定时执行几百个任务,但是并发数又不能太高,因为任务执行过程中依赖第三方的一些资源,对请求的速率有限制,这时就可以通过channel来控制并发数.