go语言实现的睡眠排序代码示例

2023-06-01 00:00:00 示例 排序 睡眠

睡眠排序算法是一个天才程序员发明的,想法很简单,

就是针对数组里的不同的数开多个线程,每个线程根据数的大小睡眠,自然睡的时间越长的,数越大,

它可以充分利用多核cpu进行计算,达到较好的性能效果。


代码示例1:

    //乱序数组
    listArr := []int{3, 4, 5, 6, 7, 2, 3}
    a4list := sync.WaitGroup{}
    
    for _, v := range listArr {
        a4list.Add(1)
        go func(v int) {
            defer a4list.Done()
            time.Sleep(time.Millisecond * cast.ToDuration(v))
            fmt.Println(v)
        }(v)
    }
    a4list.Wait()


代码示例2:

listArr := []int{3, 4, 5, 6, 7, 2, 3}

ch := make(chan int)

for _, value := range listArr {
   go func(v int){
       time.Sleep( int64(v)*10000000 )
       fmt.Println(v)
       ch <-v
   }(value)
}

for _ = range listArr {
   <-ch
}

相关文章