tailscale/syncs
Joe Tsai d209b032ab
syncs: add Map.WithLock to allow mutations to the underlying map (#8101)
Some operations cannot be implemented with the prior API:
* Iterating over the map and deleting keys
* Iterating over the map and replacing items
* Calling APIs that expect a native Go map

Add a Map.WithLock method that acquires a write-lock on the map
and then calls a user-provided closure with the underlying Go map.
This allows users to interact with the Map as a regular Go map,
but with the gaurantees that it is concurrent safe.

Updates tailscale/corp#9115

Signed-off-by: Joe Tsai <joetsai@digital-static.net>
2024-07-11 16:16:30 -07:00
..
locked_test.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
locked.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
pool_test.go syncs: add generic Pool (#12759) 2024-07-10 09:39:52 -07:00
pool.go syncs: add generic Pool (#12759) 2024-07-10 09:39:52 -07:00
shardedmap_test.go syncs: add ShardedMap.Mutate 2023-06-28 08:43:15 -07:00
shardedmap.go syncs: add ShardedMap.Mutate 2023-06-28 08:43:15 -07:00
syncs_test.go syncs: add Map.WithLock to allow mutations to the underlying map (#8101) 2024-07-11 16:16:30 -07:00
syncs.go syncs: add Map.WithLock to allow mutations to the underlying map (#8101) 2024-07-11 16:16:30 -07:00