如何自动更改切片中子切片的值

问题描述 投票:0回答:0

我在 golang 中有一个包含二进制数据的字节切片。现在,在该切片中有一个

32 bit
整数充当锁。该切片来自映射内存,因此另一个进程正在访问相同的数据。现在我需要能够原子地
CompareAndSwap
32 bit
值的内容。

示例:

// before:
// slice data                    [ ---  lock value  --- ]
// []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ...}
//
// do atomic compare and swap with []byte{0x00, 0x00, 0x00, 0x01} on a given 
// index in the original slice.
// after the operation the original slice should contain:
// new data                       [ ---  lock value  --- ] 
// []byte{0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x01 ...}

我查看了

atomic.CompareAndSwapPointer
方法与
unsafe.Pointer
的结合,但我无法让它工作。上述行为在 go 中是否可能?请注意,我需要该操作在其他进程中是原子的。所以不仅仅在当前的 go 进程内。

go atomic shared-memory
© www.soinside.com 2019 - 2024. All rights reserved.