go-plus (Go+) is an API library that exposes CRL's custom Go
extensions to Go programs.
The following two extensions are provided:
proc provides Go programs with finer grain control over the
Go runtime system. This makes it possible to build more "advanced"
concurrency data structures such as a custom sync.Pool implementation.
It also provides a new runtime feature called "Inheritable Goroutine
ID" (IGID).
taskgroup provides Go program with a new runtime abstraction called
“task group” (discussed here),
to provide aggregate accounting of resource usage to fleets of related
goroutines.
When using this library with a “vanilla” Go runtime, the Supported()
API calls in each package return false, to indicate the extension is
not available.
This makes it possible to build Go programs using this API
even with a “vanilla” Go compiler and runtime.
Note: the way this works is that the customized go runtime implicitly
provides an extra build tag goplus. One can check whether the custom
runtime is active with e.g. go test -v ./proc inside the library
(the provided TestSupported reports the build tags and support
status).
Package taskgroup introduces the “task group” abstraction in the Go runtime, as discussed here: https://github.com/cockroachdb/cockroach/pull/60589 In short, task groups are groups of related goroutines that share some accounting properties inside the Go runtime.
Package taskgroup introduces the “task group” abstraction in the Go runtime, as discussed here: https://github.com/cockroachdb/cockroach/pull/60589 In short, task groups are groups of related goroutines that share some accounting properties inside the Go runtime.
Click to show internal directories.
Click to hide internal directories.
go.dev uses cookies from Google to deliver and enhance the quality of its services and to
analyze traffic. Learn more.