登录
首页 >  Golang >  Go问答

数以千计的 goroutine 同步执行

来源:stackoverflow

时间:2024-03-06 18:09:25 410浏览 收藏

你在学习Golang相关的知识吗?本文《数以千计的 goroutine 同步执行》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我正在开发历史交易数据的模拟器模型。我有下面的伪代码,其中使用了许多 goroutine。

start_day := "2015-01-01 09:15:00 "
end_day := "2015-02-01 09:15:00"
ch = make(chan float64)
var value bool

// pair_map have some int pairs like {1,2},{10,11} like approx 20k pairs which are taken
// dynamically from a range of input
for start_day.Before(end_day) {
    // a true value in ch is set at end of each func call
    go get_output(ch, start_day, pair_map)
    value <- ch
    start_day = start_date.Add(time.Hour * 24)
}

现在的问题是每个 get_otput() 大约执行一次。对于每天 20k 个组合(大约需要 1 分钟),这里我尝试使用 go 例程(在单核机器上)执行一个月的时间跨度,但它花费的时间几乎与运行相同按顺序(约 30 分钟)。

我的方法有什么问题吗,还是因为我使用的是单核?


解决方案


我尝试使用go例程(在单核机器上)来完成一个月的时间跨度,但它所花费的时间几乎与顺序运行相同

是什么让您认为它应该表现得更好?运行多个 goroutine 有其开销:必须管理和调度 goroutine,必须传达/收集结果。如果你有一个核心,使用多个 goroutine 不会带来性能提升,只会带来损害。

如果您有多个核心,并且您分配的任务足够“大”,那么使用 goroutine 可能会带来性能提升,因此 goroutine 管理将小于并行执行的增益。

查看相关:Is golang good to use in multithreaded application?

到这里,我们也就讲完了《数以千计的 goroutine 同步执行》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>