lockfree

package
v1.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 15, 2025 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

Lock-free data structures

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Queue

type Queue[T any] struct {
	// contains filtered or unexported fields
}

Queue is a lock-free queue with a single consumer and multiple producers.

func NewQueue

func NewQueue[T any]() *Queue[T]

func (*Queue[T]) Pop

func (q *Queue[T]) Pop() (val T, ok bool)

func (*Queue[T]) Push

func (q *Queue[T]) Push(v T)

type YiQueue

type YiQueue[T any] struct {
	Notify chan struct{}
	// contains filtered or unexported fields
}

YiQueue is a lock-free Yielding Queue.

It is desgined to be used by a single consumer and multiple producers. Very little spin-locking is used; instead the ring will notify the consumer with a channel when the write rate is not keeping up with the read rate.

func NewYiQueue

func NewYiQueue[T any]() *YiQueue[T]

func (*YiQueue[T]) Iter

func (yq *YiQueue[T]) Iter() iter.Seq[T]

func (*YiQueue[T]) Pop

func (yq *YiQueue[T]) Pop() (val T, ok bool)

func (*YiQueue[T]) Push

func (yq *YiQueue[T]) Push(v T)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL