我有一片 30'000 根弦。如何将这个切片分成 10 个 goroutine 进行处理,这些协程将从切片中获取 3000 个字符串,从中提取一些数据并推送到一个新切片中?
所以,最后,我将有 10 个切片,每个切片有 3000 个处理结果。处理这个问题的模式是什么?
我已经看过这篇文章,但不确定这些模式中的哪一种适用于我的情况。
使用通道,从切片中读取元素,使用扇出来分配负载并传递消息。然后,在 Goroutine 中处理字符串并在单个 Goroutine 中收集结果(扇入)以避免互斥。
您可能想要设置最大并发 Goroutines 的数量。
请记住,写入切片时它们不是线程安全的。
有用的信息:
https://blog.golang.org/pipelines https://talks.golang.org/2012/concurrency.slide#1 https://blog.golang.org/advanced-go-concurrency-patterns https://talks .golang.org/2013/advconc.slide#1
归档时间: |
|
查看次数: |
4217 次 |
最近记录: |