1
SuperFashi 2017-01-31 14:55:01 +08:00 via Android
用途?
|
2
Valyrian 2017-01-31 14:58:43 +08:00
以前用 golang 作业写过类似的东西。。
|
3
Siril OP |
4
ovear 2017-01-31 15:09:53 +08:00
这个不是直接封装 chan 就好了么
一个分发 chan ,一个 slice ,多个处理 chan 分发 chan 里面直接循环往 slice 的 chan 塞东西就好了。。有啥问题么? |
5
jarlyyn 2017-01-31 15:14:02 +08:00 via Android
没看懂用途
|
6
jarlyyn 2017-01-31 15:16:20 +08:00 via Android
|
7
buckethead1 2017-01-31 15:30:30 +08:00
就是 pub/sub 么...
|
8
Siril OP @jarlyyn
对,就是一个 go routine 负责从外部读取一些东西塞 chan , 其他一组 go routine 需要取 chan , 这组 go routine 随时有新增和退出。 如果不用 mutex 。。。 |
9
lecher 2017-01-31 15:53:17 +08:00 via Android
生产者和消费者模型,七牛的公开技术文档经常提到这个设计模式在内部项目的应用场景。
|
10
wweir 2017-01-31 15:59:47 +08:00 via Android
chan 的 close 信号是广播的
|
11
Siril OP @ovear 我似乎理解你说的意思,就是元素为 chan 的 slice 。
一开始就是这么弄的, 然后发现 2 个问题: 新开的 goroutine 需要获取一个 chan 用来收消息; 一个收消息的 goroutine 可能随时退出,然后这个 slice 大小只增不减。 |
12
ovear 2017-01-31 17:22:53 +08:00
|
13
SuperFashi 2017-01-31 18:16:12 +08:00
|
14
nareix 2017-02-01 09:37:59 +08:00
sync.Cond
|
15
codehz 2017-03-20 17:53:37 +08:00
我记得反射就可以了。。。性能应该会比用链式结构的好吧
`reflect.Select`可以接收一个数组 |