From: Matt Joiner Date: Sat, 9 Jun 2018 12:11:19 +0000 (+1000) Subject: Increment conn read/write stats asynchronously X-Git-Tag: v1.0.0~127^2~48 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=415c6f6654db38660adadc776464d827f043a8ca;p=btrtrc.git Increment conn read/write stats asynchronously Acquiring the lock appears to be quite intensive. --- diff --git a/conn_stats.go b/conn_stats.go index 144ab0cb..9e01104b 100644 --- a/conn_stats.go +++ b/conn_stats.go @@ -68,16 +68,20 @@ type connStatsReadWriter struct { func (me connStatsReadWriter) Write(b []byte) (n int, err error) { n, err = me.rw.Write(b) - me.l.Lock() - me.c.wroteBytes(int64(n)) - me.l.Unlock() + go func() { + me.l.Lock() + me.c.wroteBytes(int64(n)) + me.l.Unlock() + }() return } func (me connStatsReadWriter) Read(b []byte) (n int, err error) { n, err = me.rw.Read(b) - me.l.Lock() - me.c.readBytes(int64(n)) - me.l.Unlock() + go func() { + me.l.Lock() + me.c.readBytes(int64(n)) + me.l.Unlock() + }() return }