| package gls | |
| import ( | |
| "sync" | |
| ) | |
| var ( | |
| keyMtx sync.Mutex | |
| keyCounter uint64 | |
| ) | |
| // ContextKey is a throwaway value you can use as a key to a ContextManager | |
| type ContextKey struct{ id uint64 } | |
| // GenSym will return a brand new, never-before-used ContextKey | |
| func GenSym() ContextKey { | |
| keyMtx.Lock() | |
| defer keyMtx.Unlock() | |
| keyCounter += 1 | |
| return ContextKey{id: keyCounter} | |
| } |