浏览代码

change to wait group

v2ray 9 年之前
父节点
当前提交
99821dc2fb
共有 1 个文件被更改,包括 6 次插入7 次删除
  1. 6 7
      proxy/dokodemo/dokodemo.go

+ 6 - 7
proxy/dokodemo/dokodemo.go

@@ -165,32 +165,31 @@ func (this *DokodemoDoor) HandleTCPConnection(conn internet.Connection) {
 	})
 	})
 	defer ray.InboundOutput().Release()
 	defer ray.InboundOutput().Release()
 
 
-	var inputFinish, outputFinish sync.Mutex
-	inputFinish.Lock()
-	outputFinish.Lock()
+	var wg sync.WaitGroup
 
 
 	reader := v2net.NewTimeOutReader(this.config.Timeout, conn)
 	reader := v2net.NewTimeOutReader(this.config.Timeout, conn)
 	defer reader.Release()
 	defer reader.Release()
 
 
+	wg.Add(1)
 	go func() {
 	go func() {
 		v2reader := v2io.NewAdaptiveReader(reader)
 		v2reader := v2io.NewAdaptiveReader(reader)
 		defer v2reader.Release()
 		defer v2reader.Release()
 
 
 		v2io.Pipe(v2reader, ray.InboundInput())
 		v2io.Pipe(v2reader, ray.InboundInput())
-		inputFinish.Unlock()
+		wg.Done()
 		ray.InboundInput().Close()
 		ray.InboundInput().Close()
 	}()
 	}()
 
 
+	wg.Add(1)
 	go func() {
 	go func() {
 		v2writer := v2io.NewAdaptiveWriter(conn)
 		v2writer := v2io.NewAdaptiveWriter(conn)
 		defer v2writer.Release()
 		defer v2writer.Release()
 
 
 		v2io.Pipe(ray.InboundOutput(), v2writer)
 		v2io.Pipe(ray.InboundOutput(), v2writer)
-		outputFinish.Unlock()
+		wg.Done()
 	}()
 	}()
 
 
-	outputFinish.Lock()
-	inputFinish.Lock()
+	wg.Wait()
 }
 }
 
 
 type Factory struct{}
 type Factory struct{}