use rLock where can, part2 (#767)

This commit is contained in:
Alex Sharov 2022-07-13 17:04:03 +07:00 committed by GitHub
parent 67b55c222b
commit caa9400c52
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 13 deletions

View File

@ -156,9 +156,9 @@ func (f *File) SetPriority(prio piecePriority) {
// Returns the priority per File.SetPriority.
func (f *File) Priority() (prio piecePriority) {
f.t.cl.lock()
f.t.cl.rLock()
prio = f.prio
f.t.cl.unlock()
f.t.cl.rUnlock()
return
}

View File

@ -27,8 +27,8 @@ func (pc *PeerConn) initMessageWriter() {
logger: pc.logger,
w: pc.w,
keepAlive: func() bool {
pc.locker().Lock()
defer pc.locker().Unlock()
pc.locker().RLock()
defer pc.locker().RUnlock()
return pc.useful()
},
writeBuffer: new(bytes.Buffer),

View File

@ -5,7 +5,6 @@ import (
"bytes"
"errors"
"fmt"
"golang.org/x/time/rate"
"io"
"math/rand"
"net"
@ -27,6 +26,7 @@ import (
pp "github.com/anacrolix/torrent/peer_protocol"
request_strategy "github.com/anacrolix/torrent/request-strategy"
"github.com/anacrolix/torrent/typed-roaring"
"golang.org/x/time/rate"
)
type PeerSource string
@ -356,8 +356,8 @@ func (cn *Peer) downloadRate() float64 {
}
func (cn *Peer) DownloadRate() float64 {
cn.locker().Lock()
defer cn.locker().Unlock()
cn.locker().RLock()
defer cn.locker().RUnlock()
return cn.downloadRate()
}

12
t.go
View File

@ -86,8 +86,8 @@ func (t *Torrent) NumPieces() pieceIndex {
// Get missing bytes count for specific piece.
func (t *Torrent) PieceBytesMissing(piece int) int64 {
t.cl.lock()
defer t.cl.unlock()
t.cl.rLock()
defer t.cl.rUnlock()
return int64(t.pieces[piece].bytesLeft())
}
@ -122,9 +122,9 @@ func (t *Torrent) SubscribePieceStateChanges() *pubsub.Subscription[PieceStateCh
// Returns true if the torrent is currently being seeded. This occurs when the
// client is willing to upload without wanting anything in return.
func (t *Torrent) Seeding() (ret bool) {
t.cl.lock()
t.cl.rLock()
ret = t.seeding()
t.cl.unlock()
t.cl.rUnlock()
return
}
@ -153,8 +153,8 @@ func (t *Torrent) Length() int64 {
// Returns a run-time generated metainfo for the torrent that includes the
// info bytes and announce-list as currently known to the client.
func (t *Torrent) Metainfo() metainfo.MetaInfo {
t.cl.lock()
defer t.cl.unlock()
t.cl.rLock()
defer t.cl.rUnlock()
return t.newMetaInfo()
}