]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Increment conn read/write stats asynchronously
authorMatt Joiner <anacrolix@gmail.com>
Sat, 9 Jun 2018 12:11:19 +0000 (22:11 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Sat, 9 Jun 2018 23:20:33 +0000 (09:20 +1000)
Acquiring the lock appears to be quite intensive.

conn_stats.go

index 144ab0cb682e0c960df4f6f40a506dc49c3540bc..9e01104bf14b9a97a64c75cdb07d8dd789d3975b 100644 (file)
@@ -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
 }