From f918e6d43cb5e8398d91e1767ec61bed7b7b4d49 Mon Sep 17 00:00:00 2001 From: xtaci Date: Wed, 8 Mar 2017 16:52:32 +0800 Subject: [PATCH] use unbuffered chan for better timing and memory --- emitter.go | 4 +--- kcp.go | 4 +++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/emitter.go b/emitter.go index 9d289e71..778151ae 100644 --- a/emitter.go +++ b/emitter.go @@ -7,8 +7,6 @@ import ( var defaultEmitter Emitter -const emitQueue = 2048 - func init() { defaultEmitter.init() } @@ -30,7 +28,7 @@ type ( ) func (e *Emitter) init() { - e.ch = make(chan emitPacket, emitQueue) + e.ch = make(chan emitPacket) go e.emitTask() } diff --git a/kcp.go b/kcp.go index 9d9b7bd4..86efc3ab 100644 --- a/kcp.go +++ b/kcp.go @@ -665,9 +665,9 @@ func (kcp *KCP) flush(ackOnly bool) { return } - current := currentMs() // probe window size (if remote window size equals zero) if kcp.rmt_wnd == 0 { + current := currentMs() if kcp.probe_wait == 0 { kcp.probe_wait = IKCP_PROBE_INIT kcp.ts_probe = current + kcp.probe_wait @@ -747,6 +747,7 @@ func (kcp *KCP) flush(ackOnly bool) { // send new segments for k := len(kcp.snd_buf) - newSegsCount; k < len(kcp.snd_buf); k++ { + current := currentMs() segment := &kcp.snd_buf[k] segment.xmit++ segment.rto = kcp.rx_rto @@ -770,6 +771,7 @@ func (kcp *KCP) flush(ackOnly bool) { // check for retransmissions for k := 0; k < len(kcp.snd_buf)-newSegsCount; k++ { + current := currentMs() segment := &kcp.snd_buf[k] needsend := false if _itimediff(current, segment.resendts) >= 0 { // RTO