Documentation
¶
Overview ¶
package parallel contains parallel LoopUntil() and parallel ForEach() plus other concurrency primitives.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Hasher ¶
type Hasher struct {
// contains filtered or unexported fields
}
func NewHashHasher ¶
func NewUint16Hasher ¶
func (*Hasher) MustPutHash ¶
func (*Hasher) MustPutUint16 ¶
type Loop ¶
type Loop int
Loop represents the number of goroutines to run.
func (Loop) LoopUntil ¶
func (l Loop) LoopUntil(yield func(i uint32, ender LoopStopper) bool)
LoopUntil starts 'l' goroutines that iterate until one of them stops the loop. Each goroutine processes a unique integer i starting from 0. The loop stops if i reaches math.MaxUint32 or any goroutine's yield returns true.
type LoopStopper ¶
type LoopStopper interface {
// Load reports true if the loop should stop.
Load() bool
}
LoopStopper is an interface to check if the loop should stop.
type MoveSet ¶
type MoveSet struct {
// contains filtered or unexported fields
}
MoveSet is a thread-safe set that tracks unique moves for a specific level. When the level changes, all existing moves are cleared to prevent mixing moves from different levels.
func NewMoveSet ¶
func NewMoveSet() *MoveSet
NewMoveSet initializes and returns a new MoveSet instance. Initial level is 0.
func (*MoveSet) Exists ¶
Exists checks if a move exists in the set for the current level. Returns false immediately if the provided level doesn't match the set's current level. position: The game position to check. move: The move identifier to check. level: The level to verify against.
func (*MoveSet) Insert ¶
Insert adds a move to the set. If the provided level differs from the current level, the set is cleared before adding the new move. This ensures moves are grouped by level. position: The game position represented as a 32-byte array. move: The move identifier to be serialized. level: The current level associated with the move.