问题:模拟100个ip向server发送请求,每个ip重复请求1000次,间隔时间不得超过3s。
package main
import (
"fmt"
"sync"
"sync/atomic"
"time"
)
const IP_NUMBER = 100
type ipTestTask struct {
handleOk chan struct{}
idle bool
}
type Ban struct {
IPs [IP_NUMBER]ipTestTask
}
func NewBan() *Ban {
var o Ban
for i := 0; i < IP_NUMBER; i++ {
o.IPs[i].handleOk = make(chan struct{})
o.IPs[i].idle = true
}
return &o
}
func (o *Ban) addTask(i int) {
o.IPs[i].idle = false
//to do task
go o.invalidAfter3Min(i)
}
func (o *Ban) wait(i int) struct{} {
fmt.Println("wait to read")
return <-o.IPs[i].handleOk
}
func (o *Ban) isBuzy(i int) bool {
if !o.IPs[i].idle {
return true
}
return false
}
// 3s后ip失效, ip再次访问时便可正常访问
func (o *Ban) invalidAfter3Min(i int) {
time.Sleep(time.Second * 3)
o.IPs[i].idle = false
o.IPs[i].handleOk <- struct{}{}
}
func main() {
var succe