首页 > 其他 > 详细

golang异步批处理的例子

时间:2021-06-18 11:54:47      阅读:23      评论:0      收藏:0      [点我收藏+]

直接上代码,估计以后未必用,留着备忘吧

package main

import (
	"github.com/gogf/gf/container/glist"
	"github.com/gogf/gf/frame/g"
	"github.com/gogf/gf/net/ghttp"
	"time"
)

func OnDemoRequest(r *ghttp.Request){
	maxCount := 100
	batchRequestChannel := make(chan int, maxCount)
	resultList := glist.New()

	startTime := time.Now()
	for i:=0; i< maxCount;i++{
		go doBatchRequest(i, resultList, batchRequestChannel)
	}
	<- batchRequestChannel

	endTime := time.Now()
	r.Response.Write("总请求时间 ", endTime.Sub(startTime))
}

func doBatchRequest(i int, resultList *glist.List, batchRequestChannel chan int ){
	content := g.Client().GetContent("http://127.0.0.1:5000")
	resultList.PushBack(content)
	batchRequestChannel <- i
}

func main() {
	server := g.Server()
	server.BindHandler("/demo", OnDemoRequest)
	server.SetPort(7654)
	server.Run()
}

golang异步批处理的例子

原文:https://www.cnblogs.com/ziyouchutuwenwu/p/14898052.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!