zoukankan      html  css  js  c++  java
  • Go Example--限速

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    	requests := make(chan int, 5)
    	for i := 1; i <= 5; i++ {
    		requests <- i
    	}
    	close(requests)
    	//初始化一个打点器
    	limiter := time.Tick(time.Millisecond * 500)
    
    	for req := range requests {
    		//每500ms读取一次数据,控制for循环的速度
    		<-limiter
    		fmt.Println("request", req, time.Now())
    	}
    
    	burstyLimiter := make(chan time.Time, 3)
    	for i := 0; i < 3; i++ {
    		burstyLimiter <- time.Now()
    	}
    	go func() {
    		for t := range time.Tick(time.Millisecond * 2000) {
    			//单起协程每2000ms往chan里面写入数据
    			burstyLimiter <- t
    		}
    	}()
    	burstyRequests := make(chan int, 5)
    	for i := 1; i <= 5; i++ {
    		burstyRequests <- i
    	}
    	close(burstyRequests)
    	for req := range burstyRequests {
    		//前3个一次执行完成,后面两个每2000ms读取一次数据,控制for循环的速度
    		<-burstyLimiter
    		fmt.Println("request", req, time.Now())
    	}
    }
    
  • 相关阅读:
    五,系统操作命令说明
    三,linux系统的由来
    二,服务器磁盘阵列(raid)
    一服务器硬件介绍
    四,元组类型
    集合类型
    字典类型
    三,列表类型
    二,字符串类型
    一,数字类型
  • 原文地址:https://www.cnblogs.com/promenader/p/9832232.html
Copyright © 2011-2022 走看看