From 89475c4c914dcf5f5a1d9d7ff900bef5acd48d1f Mon Sep 17 00:00:00 2001 From: Dmitry K Date: Sun, 19 Mar 2023 15:05:46 +0300 Subject: [PATCH] use `atomic.Int32` instead of `int + atomic calls` --- internal/nbconn/nbconn.go | 2 +- internal/nbconn/nbconn_real_non_block_windows.go | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/internal/nbconn/nbconn.go b/internal/nbconn/nbconn.go index a0dd5d4c..5c1bc400 100644 --- a/internal/nbconn/nbconn.go +++ b/internal/nbconn/nbconn.go @@ -99,7 +99,7 @@ type NetConn struct { writeDeadline time.Time // nbOperCnt Tracks how many operations performing simultaneously - nbOperCnt int32 + nbOperCnt atomic.Int32 } func NewNetConn(conn net.Conn, fakeNonBlockingIO bool) *NetConn { diff --git a/internal/nbconn/nbconn_real_non_block_windows.go b/internal/nbconn/nbconn_real_non_block_windows.go index 541a6604..d7446706 100644 --- a/internal/nbconn/nbconn_real_non_block_windows.go +++ b/internal/nbconn/nbconn_real_non_block_windows.go @@ -6,7 +6,6 @@ import ( "errors" "golang.org/x/sys/windows" "io" - "sync/atomic" "syscall" "unsafe" ) @@ -133,12 +132,12 @@ func (c *NetConn) SetBlockingMode(blocking bool) error { if blocking { // Not ready to exit from non-blocking mode, there are pending non-blocking operations - if atomic.AddInt32(&c.nbOperCnt, -1) > 0 { + if c.nbOperCnt.Add(-1) > 0 { return nil } } else { // Socket is already in non-blocking state - if atomic.AddInt32(&c.nbOperCnt, 1) > 1 { + if c.nbOperCnt.Add(1) > 1 { return nil } } @@ -157,9 +156,9 @@ func (c *NetConn) SetBlockingMode(blocking bool) error { if ctrlErr != nil || err != nil { // Revert counters inc/dec in case of error if blocking { - atomic.AddInt32(&c.nbOperCnt, 1) + c.nbOperCnt.Add(1) } else { - atomic.AddInt32(&c.nbOperCnt, -1) + c.nbOperCnt.Add(-1) } if ctrlErr != nil {