Use chan struct{} for tx/blockProcessed chans.

These channels are being used as semaphores, so it's more efficient to use
a 0-byte type and allow compiler optimizations for the specific use case.
This commit is contained in:
Dave Collins 2014-07-10 22:28:22 -05:00
parent 1483b92dcf
commit 83cffc5d27
2 changed files with 8 additions and 8 deletions

View file

@ -1018,11 +1018,11 @@ out:
case *txMsg:
b.handleTxMsg(msg)
msg.peer.txProcessed <- true
msg.peer.txProcessed <- struct{}{}
case *blockMsg:
b.handleBlockMsg(msg)
msg.peer.blockProcessed <- true
msg.peer.blockProcessed <- struct{}{}
case *invMsg:
b.handleInvMsg(msg)
@ -1189,7 +1189,7 @@ func (b *blockManager) NewPeer(p *peer) {
func (b *blockManager) QueueTx(tx *btcutil.Tx, p *peer) {
// Don't accept more transactions if we're shutting down.
if atomic.LoadInt32(&b.shutdown) != 0 {
p.txProcessed <- false
p.txProcessed <- struct{}{}
return
}
@ -1200,7 +1200,7 @@ func (b *blockManager) QueueTx(tx *btcutil.Tx, p *peer) {
func (b *blockManager) QueueBlock(block *btcutil.Block, p *peer) {
// Don't accept more blocks if we're shutting down.
if atomic.LoadInt32(&b.shutdown) != 0 {
p.blockProcessed <- false
p.blockProcessed <- struct{}{}
return
}

View file

@ -168,8 +168,8 @@ type peer struct {
sendDoneQueue chan struct{}
queueWg sync.WaitGroup // TODO(oga) wg -> single use channel?
outputInvChan chan *btcwire.InvVect
txProcessed chan bool
blockProcessed chan bool
txProcessed chan struct{}
blockProcessed chan struct{}
quit chan struct{}
StatsMtx sync.Mutex // protects all statistics below here.
versionKnown bool
@ -1795,8 +1795,8 @@ func newPeerBase(s *server, inbound bool) *peer {
sendQueue: make(chan outMsg, 1), // nonblocking sync
sendDoneQueue: make(chan struct{}, 1), // nonblocking sync
outputInvChan: make(chan *btcwire.InvVect, outputBufferSize),
txProcessed: make(chan bool, 1),
blockProcessed: make(chan bool, 1),
txProcessed: make(chan struct{}, 1),
blockProcessed: make(chan struct{}, 1),
quit: make(chan struct{}),
}
return &p