All Downloads are FREE. Search and download functionalities are using the official Maven repository.

vendor.github.com.jtolds.gls.gid.go Maven / Gradle / Ivy

The newest version!
package gls

var (
	stackTagPool = &idPool{}
)

// Will return this goroutine's identifier if set. If you always need a
// goroutine identifier, you should use EnsureGoroutineId which will make one
// if there isn't one already.
func GetGoroutineId() (gid uint, ok bool) {
	return readStackTag()
}

// Will call cb with the current goroutine identifier. If one hasn't already
// been generated, one will be created and set first. The goroutine identifier
// might be invalid after cb returns.
func EnsureGoroutineId(cb func(gid uint)) {
	if gid, ok := readStackTag(); ok {
		cb(gid)
		return
	}
	gid := stackTagPool.Acquire()
	defer stackTagPool.Release(gid)
	addStackTag(gid, func() { cb(gid) })
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy