gpt4 book ai didi

recursion - 通过 WaitGroup 编排递归快速排序调用

转载 作者:数据小太阳 更新时间:2023-10-29 03:04:22 25 4
gpt4 key购买 nike

我正在尝试并行运行递归快速排序调用:

func quicksort(a []int) {
quicksortRecursive(a)
wg.Wait()
insertionsort(a)
}

func quicksortRecursive(a []int) {
if len(a) > THRESHOLD {
l, r := partition(a)
wg.Add(2)
go func() {
quicksortRecursive(a[:r+1])
wg.Done()
}()
go func() {
go quicksortRecursive(a[l:])
wg.Done()
}()
}
}

go 调用对我来说显得过于笨重。以下更具可读性的版本是否仍然正确?

func quicksort(a []int) {
wg.Add(1)
quicksortRecursive(a)
wg.Wait()
insertionsort(a)
}

func quicksortRecursive(a []int) {
if len(a) > THRESHOLD {
l, r := partition(a)
wg.Add(2)
go quicksortRecursive(a[:r+1])
go quicksortRecursive(a[l:])
}
wg.Done()
}

我特别想知道在同一线程中调用初始 wg.Add(1) 和相应的 wg.Done() 是否正确。

最佳答案

如果它能正常工作,那么它就是正确的。就代码质量而言,除了对 WaitGroup 使用全局变量有点担心外,我没有发现该方法有任何问题。如果它是一个小应用程序,它可能没问题,否则我会使用在 quicksort 中创建的局部变量并将其作为参数传递给 quicksortRecursive

关于recursion - 通过 WaitGroup 编排递归快速排序调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45223285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com