Update core/sender_cacher.go

Co-authored-by: jwasinger <j-wasinger@hotmail.com>
This commit is contained in:
Felix Lange 2025-01-15 18:09:30 +01:00 committed by GitHub
parent e9b9afece4
commit f76f30d4b6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -23,22 +23,15 @@ import (
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
) )
var ( // senderCacherOnce is used to ensure that the SenderCacher is initialized only once.
// senderCacherOnce is used to ensure that the SenderCacher is initialized only once. var senderCacherOnce = sync.OnceValue(func() *txSenderCacher {
// It leverages sync.Once to provide thread-safe lazy initialization. return newTxSenderCacher(runtime.NumCPU())
senderCacherOnce sync.Once })
// senderCacherInstance is a concurrent transaction sender recoverer and cacher.
senderCacherInstance *txSenderCacher
)
// SenderCacher returns the singleton instance of SenderCacher. // SenderCacher returns the singleton instance of SenderCacher, initializing it if called for the first time.
// If the instance has not been initialized yet, it will be created using newTxSenderCacher.
// This function is thread-safe and ensures that initialization happens only once. // This function is thread-safe and ensures that initialization happens only once.
func SenderCacher() *txSenderCacher { func SenderCacher() *txSenderCacher {
senderCacherOnce.Do(func() { return senderCacherOnce()
senderCacherInstance = newTxSenderCacher(runtime.NumCPU())
})
return senderCacherInstance
} }
// txSenderCacherRequest is a request for recovering transaction senders with a // txSenderCacherRequest is a request for recovering transaction senders with a