Ho appena trovato questa biblioteca, che fornisce l'anello senza blocchi, che funziona modo più veloce quindi canali: https://github.com/textnode/gringo (e funziona davvero più veloce soprattutto con GOMAXPROCS> 1)Perché struct con i campi di imbottitura opere più veloce
Ma una parte interessante è struct per la gestione dello stato della coda:
type Gringo struct {
padding1 [8]uint64
lastCommittedIndex uint64
padding2 [8]uint64
nextFreeIndex uint64
padding3 [8]uint64
readerIndex uint64
padding4 [8]uint64
contents [queueSize]Payload
padding5 [8]uint64
}
Se rimuovo "paddingX [8] uint64" campi funziona più lento di circa il 20%. Come può essere?
Apprezzo anche se qualcuno ha spiegato perché questo algoritmo lock-free è molto più veloce dei canali, persino bufferizzato?
Grazie, non lo sapevo! – Intermernet
Grazie! È una caratteristica molto interessante! –