[Go] 利用有缓存channel控制同时并发的数量
2024-08-31 21:09:44
如果有一个大循环,里面每一个都开启groutine,那么瞬间就会开启非常多的groutine,要解决这个问题就要用channel的阻塞特性来解决
package main import "time" import "fmt" func main() {
control := make(chan interface{}, )
for i := ; i <= ; i++ {
control <- i //这里应该放上面,如果放下面就会每次都执行三个了
go func(j int) {
fmt.Printf("go func: %d, time: %d\n", j, time.Now().Unix())
time.Sleep(time.Second)
<-control
}(i) }
//主groutine不要断
for {
time.Sleep(time.Second)
}
}
go func: , time:
go func: , time:
go func: , time:
go func: , time:
go func: , time:
go func: , time:
go func: , time:
go func: , time:
go func: , time:
go func: , time:
看时间每次只是同时执行两个
最新文章
- Hadoop学习路线图
- 使用yum来安装或卸载CentOS图形界面包
- Python大数据依赖包安装
- UVa 400 Unix Is
- 开始使用版本控制,局域网搭个SVN
- Oracle 中单引号和双引号的区别
- python中telnetlib模块的使用
- iptables-过滤61开头的ip数据包
- Unity Tiny &; ECS 学习笔记
- 使用PHP中的ajax做登录页面、验证用户名是否可用、动态调用数据库
- gm图片处理器:The gm/convert binaries can&#39;t be found
- Schema、API Schema与MFn
- medir设置
- 转载 [ZooKeeper.net] 3 ZooKeeper的分布式锁
- 使用 alt_disk_copy 克隆 rootvg
- EF实现主从表自动生成主键保存
- 每天一个linux命令(性能、优化):【转载】iostat命令
- Jquery 实现轮播图
- HDU 1198 Farm Irrigation(并查集+位运算)
- IIC接口总线