Documentation ¶
Overview ¶
Package stackless provides functionality that may save stack space for high number of concurrently running goroutines.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewFunc ¶
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:
- f doesn't contain blocking calls on network, I/O or channels;
- f uses a lot of stack space;
- the wrapper is called from high number of concurrent goroutines.
The stackless wrapper returns false if the call cannot be processed at the moment due to high load.
Types ¶
type NewWriterFunc ¶
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.