func (c *GsiClient) setBucketHash(bucketn string, crc64 uint64) { for { ptr := platform.LoadPointer(&c.bucketHash) oldm := (*map[string]uint64)(ptr) newm := map[string]uint64{} for k, v := range *oldm { newm[k] = v } newm[bucketn] = crc64 if platform.CompareAndSwapPointer(&c.bucketHash, ptr, unsafe.Pointer(&newm)) { return } } }
func (b *Bucket) replaceConnPools(with []*connectionPool) { for { old := platform.LoadPointer(&b.connPools) if platform.CompareAndSwapPointer(&b.connPools, old, unsafe.Pointer(&with)) { if old != nil { for _, pool := range *(*[]*connectionPool)(old) { if pool != nil { pool.Close() } } } return } } }