关于原书第一版中channel和goroutine一章载荷发生器 并发量公式
并发量 = 单个载荷的响应超时时间 / 载荷的发送间隔时间 1e9 / lps 代表了发送的间隔, 对这一段有疑问? a) lps是发送频率可以理解,1e9 / lps 代表了发送的间隔 为什么这个可以作为发送间隔? b)并发量 的公式 也是不理解?
另外再后续实现代码里, func (gen *myGenerator) genLoad(throttle <-chan time.Time) { callCount := uint64(0) Loop: for ; ; callCount++ { select { case <-gen.stopSign: gen.handleStopSign(callCount) break Loop default: } gen.asyncCall() if gen.lps > 0 { select { case <-throttle: case <-gen.stopSign: gen.handleStopSign(callCount) break Loop } } } }
这里再start里其实只是一个goroutine启动,然后无限循环,这样的测试,其实每个发送请求之间并不是一起过去的,是一次循环一次循环出去的。那这个并发其实并不准确。为何不使用 for i =0 ; i < current ; i ++ { go func() { for { //todo } }() } 这样在启动起来之后,基本可以说同1s,有那么多goroutine 进行请求。
而上述循环中,不停开启goroutine,如果接口响应很快的话,基本是不可能有一个同一时间的压力
这里,我的理解是否有偏差,还望解答,谢谢。