go语言生产者,消费者事例
2013-09-26 15:50
323 查看
package main import "fmt" import "time" func main() { // ch := make(chan int, 10) ch := make(chan int) go produce("生产者1",ch) go produce("生产者2",ch) time.Sleep(1 * time.Second) go use(ch) time.Sleep(101 * time.Second) } func produce(pname string,ch chan int) { for i:= 0;i < 20;i++ { fmt.Println("produce", pname ," : ", i) ch <- i // 这里需要在打印语句之后,否者可能产生理解歧义 time.Sleep(1 * time.Second) } } func use(ch chan int) { var i int loop1: i = <-ch fmt.Println("use : ",i ) goto loop1 }
以上代码有很多细节上的不完善的地方,修改:
package main import "fmt" import "time" func main() { // ch := make(chan int, 10) ch := make(chan int) defer close(ch) go produce("生产者1",ch) go produce("生产者2",ch) time.Sleep(1 * time.Second) go use(ch) time.Sleep(30 * time.Second) } func produce(pname string,ch chan int) { for i:= 0;i < 20;i++ { fmt.Println("produce", pname ," : ", i) ch <- i time.Sleep(1 * time.Second) } } func use(ch chan int) { for i := range ch { fmt.Println("use : ",i ) } }
多个生产者,多个消费者
package main import "fmt" import "time" func main() { // ch := make(chan int, 10) ch := make(chan int) defer close(ch) go produce("生产者1", ch) go produce("生产者2", ch) time.Sleep(1 * time.Second) go use("消费者1", ch) go use("消费者2", ch) time.Sleep(30 * time.Second) } func produce(pname string, ch chan int) { for i := 0; i < 20; i++ { fmt.Println("produce", pname, " : ", i) ch <- i time.Sleep(1 * time.Second) } } func use(uname string, ch chan int) { for i := range ch { fmt.Println("use", uname, " : ", i) } }
相关文章推荐
- Go语言模拟一个生产者消费者的Demo
- python自动化--语言基础线程、生产者消费者示例
- 一起talk C栗子吧(第一百零五回:C语言实例--生产者与消费者问题一)
- Go---channel实现生产者消费者
- Go 生产者消费者模型
- 生产者消费者问题VC语言实现
- Python语言中的协程(生产者-消费者举例)
- 生产者与消费者模型代码及具体事例
- Java语言synchronized与lock实现生产者消费者
- linux下c语言生产者消费者问题
- Go 消费者和生产者的简单例子
- 生产者与消费者C语言,Java语言
- Go 消费者和生产者的简单例子
- Kafka使用go实现生产者和消费者
- 一起talk C栗子吧(第一百零六回:C语言实例--生产者与消费者问题二)
- Go 消费者和生产者的简单例子
- 生产者与消费者
- 关于Go语言共享内存操作的小实例
- Java线程(九)-生产者消费者模型
- Go 语言项目管理