diff options
Diffstat (limited to 'syncs/lock_example_test.go')
| -rw-r--r-- | syncs/lock_example_test.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/syncs/lock_example_test.go b/syncs/lock_example_test.go new file mode 100644 index 000000000..13184c7c0 --- /dev/null +++ b/syncs/lock_example_test.go @@ -0,0 +1,37 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +package syncs_test + +import ( + "encoding/hex" + "log" + "sync" + + "tailscale.com/syncs" +) + +func ExampleLockFunc() { + var nodesMu sync.Mutex + var nodes []string + syncs.LockFunc(&nodesMu, func() { nodes = append(nodes, "node123") }) +} + +func ExampleLockValue() { + var nodesMu sync.Mutex + var nodes []string + n := syncs.LockValue(&nodesMu, func() int { return len(nodes) }) + log.Printf("there are %d nodes", n) +} + +func ExampleLockValues() { + var bufferMu sync.Mutex + var buffer string + b, err := syncs.LockValues(&bufferMu, func() ([]byte, error) { + return hex.DecodeString(buffer) + }) + if err != nil { + log.Fatalf("Decode error: %v", err) + } + log.Printf("decoded %d bytes", len(b)) +} |
