package stackless

import "github.com/valyala/fasthttp/stackless"

Package stackless provides functionality that may save stack space for high number of concurrently running goroutines.

Index

Functions

func NewFunc

func NewFunc(f func(ctx any)) func(ctx any) bool

NewFunc returns stackless wrapper for the function f.

Unlike f, the returned stackless wrapper doesn't use stack space on the goroutine that calls it. The wrapper may save a lot of stack space if the following conditions are met:

The stackless wrapper returns false if the call cannot be processed at the moment due to high load.

Types

type NewWriterFunc

type NewWriterFunc func(w io.Writer) Writer

NewWriterFunc must return new writer that will be wrapped into stackless writer.

type Writer

type Writer interface {
	Write(p []byte) (int, error)
	Flush() error
	Close() error
	Reset(w io.Writer)
}

Writer is an interface stackless writer must conform to.

The interface contains common subset for Writers from compress/* packages.

func NewWriter

func NewWriter(dstW io.Writer, newWriter NewWriterFunc) Writer

NewWriter creates a stackless writer around a writer returned from newWriter.

The returned writer writes data to dstW.

Writers that use a lot of stack space may be wrapped into stackless writer, thus saving stack space for high number of concurrently running goroutines.

Source Files

doc.go func.go writer.go

Version
v1.62.0 (latest)
Published
May 7, 2025
Platform
windows/amd64
Imports
6 packages
Last checked
3 weeks ago

Tools for package owners.