]> 127.0.0.1 Git - part/.git/commitdiff
fix block in limit v0.5.6
authorqydysky <qydysky@foxmail.com>
Mon, 12 Apr 2021 08:25:42 +0000 (16:25 +0800)
committerqydysky <qydysky@foxmail.com>
Mon, 12 Apr 2021 08:25:42 +0000 (16:25 +0800)
limit/Limit.go
limit/Limit_test.go

index 410a2c898a60c5da671b27ce75e3b67039d02f9b..c7d55af2d358d6cbf1df7399deb9032a8bddd4f8 100644 (file)
@@ -23,8 +23,12 @@ func New(maxNum_in_period,ms_in_period,ms_to_timeout int) (*Limit) {
 
        go func(object *Limit){
                for object.maxNum_in_period > 0 {
-                       for i:=1;i<=object.maxNum_in_period;i++{
-                               object.bucket <- struct{}{}
+                       object.bucket <- struct{}{}
+                       for i:=1;i<object.maxNum_in_period;i++{
+                               select {
+                               case object.bucket <- struct{}{}:;
+                               default :i = object.maxNum_in_period
+                               }
                        }
                        time.Sleep(time.Duration(object.ms_in_period)*time.Millisecond)
                }
index 744144926b8479aaf4634f818849bee30c2e049b..688a8038ccab28f23a63168f90bda7089bc5e508 100644 (file)
@@ -54,10 +54,10 @@ func Test_4(t *testing.T){
 }
 
 func Test_5(t *testing.T){
-       l := New(100,5000,0)
-       for i:=0;i<50;i+=1{
+       l := New(100,3000,0)
+       t.Log(l.TK())
+       for i:=1;i<=50;i+=1{
                l.TO()
-               time.Sleep(time.Millisecond)
        }
        if l.TK() != 50 {t.Error(`5`,l.TK())}
 }
\ No newline at end of file