...

Package synctest

import "internal/synctest"
Overview
Index

Overview ▾

Package synctest provides support for testing concurrent code.

See the testing/synctest package for function documentation.

Constants

const (
    Unbubbled     = Association(iota) // not associated with any bubble
    CurrentBubble                     // associated with the current bubble
    OtherBubble                       // associated with a different bubble
)

func Disassociate

func Disassociate[T any](p *T)

Disassociate disassociates p from any bubble.

func IsAssociated

func IsAssociated[T any](p *T) bool

IsAssociated reports whether p is associated with the current bubble.

func IsInBubble

func IsInBubble() bool

IsInBubble reports whether the current goroutine is in a bubble.

func Run

func Run(f func())

func Wait

func Wait()

type Association

Association is the state of a pointer's bubble association.

type Association int

func Associate

func Associate[T any](p *T) Association

Associate attempts to associate p with the current bubble. It returns the new association status of p.

type Bubble

A Bubble is a synctest bubble.

Not a public API. Used by syscall/js to propagate bubble membership through syscalls.

type Bubble struct {
    // contains filtered or unexported fields
}

func Acquire

func Acquire() *Bubble

Acquire returns a reference to the current goroutine's bubble. The bubble will not become idle until Release is called.

func (*Bubble) Release

func (b *Bubble) Release()

Release releases the reference to the bubble, allowing it to become idle again.

func (*Bubble) Run

func (b *Bubble) Run(f func())

Run executes f in the bubble. The current goroutine must not be part of a bubble.