1ded097733
* implement block process part of light sync * add difflayer protocol * handle difflayer and refine light processor * add testcase for diff protocol * make it faster * allow validator to light sync * change into diff sync * ligth sync: download difflayer (#2) * ligth sync: download difflayer Signed-off-by: kyrie-yl <lei.y@binance.com> * download diff layer: fix according to the comments Signed-off-by: kyrie-yl <lei.y@binance.com> * download diff layer: update Signed-off-by: kyrie-yl <lei.y@binance.com> * download diff layer: fix accroding comments Signed-off-by: kyrie-yl <lei.y@binance.com> Co-authored-by: kyrie-yl <lei.y@binance.com> * update light sync to diff sync * raise the max diff limit * add switcher of snap protocol * fix test case * make commit concurrently * remove peer for diff cache when peer closed * consensus tuning * add test code * remove extra message * fix testcase and lint make diff block configable wait code write fix testcase resolve comments resolve comment * resolve comments * resolve comments * resolve comment * fix mistake Co-authored-by: kyrie-yl <83150977+kyrie-yl@users.noreply.github.com> Co-authored-by: kyrie-yl <lei.y@binance.com>
61 lines
1.2 KiB
Go
61 lines
1.2 KiB
Go
package gopool
|
|
|
|
import (
|
|
"runtime"
|
|
"time"
|
|
|
|
"github.com/panjf2000/ants/v2"
|
|
)
|
|
|
|
var (
|
|
// Init a instance pool when importing ants.
|
|
defaultPool, _ = ants.NewPool(ants.DefaultAntsPoolSize, ants.WithExpiryDuration(10*time.Second))
|
|
minNumberPerTask = 5
|
|
)
|
|
|
|
// Logger is used for logging formatted messages.
|
|
type Logger interface {
|
|
// Printf must have the same semantics as log.Printf.
|
|
Printf(format string, args ...interface{})
|
|
}
|
|
|
|
// Submit submits a task to pool.
|
|
func Submit(task func()) error {
|
|
return defaultPool.Submit(task)
|
|
}
|
|
|
|
// Running returns the number of the currently running goroutines.
|
|
func Running() int {
|
|
return defaultPool.Running()
|
|
}
|
|
|
|
// Cap returns the capacity of this default pool.
|
|
func Cap() int {
|
|
return defaultPool.Cap()
|
|
}
|
|
|
|
// Free returns the available goroutines to work.
|
|
func Free() int {
|
|
return defaultPool.Free()
|
|
}
|
|
|
|
// Release Closes the default pool.
|
|
func Release() {
|
|
defaultPool.Release()
|
|
}
|
|
|
|
// Reboot reboots the default pool.
|
|
func Reboot() {
|
|
defaultPool.Reboot()
|
|
}
|
|
|
|
func Threads(tasks int) int {
|
|
threads := tasks / minNumberPerTask
|
|
if threads > runtime.NumCPU() {
|
|
threads = runtime.NumCPU()
|
|
} else if threads == 0 {
|
|
threads = 1
|
|
}
|
|
return threads
|
|
}
|