package main
import (
"fmt"
"time"
)
// 适用于多线程和分布式环境下
var flag bool
var container chan bool
var count int
func main() {
var arr []int = []int{16, 8, 1, 24, 30}
flag = true //标识区分
container = make(chan bool, 5) //5个管道
for i := 0; i < len(arr); i++ {
go tosleep(arr[i])
}
go listen(len(arr))
for flag {
time.Sleep(1 * time.Second)
}
}
func listen(size int) {
for flag {
select {
case <-container:
count++ // 计数器
if count >= size { // 等待五个数据采集完成,就退出
flag = false
break
}
}
}
}
func tosleep(data int) {
time.Sleep(time.Duration(data) * time.Microsecond * 1000)
fmt.Println("sleep", data)
container <- true //管道输入ok
}
休眠排序
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 用Objective-C实现几种基本的排序算法,并把排序的过程图形化显示。其实算法还是挺有趣的 ^ ^. 选择排序...
- 基本思想 数组分成有序区和无序区,初始时整个数组都是无序区,然后每次从无序区选一个最小的元素直接放到有序区的最后,...