使用切片作为共享内存可以吗?
Is it ok to use slices as shared memory?
在这样的结构中使用切片是否可以:
type buffer struct {
values []int
mutex sync.RWMutex
}
我问是因为当我们附加到切片时,我们有可能将切片复制到内存中的新位置。
在大多数 Go 编程中,人们会在不考虑性能的情况下分配回切片,以防 append
returns 新内存,因为切片是参考值。
b.values = append(b.values, i)
type buffer struct {
values []int
mutex sync.RWMutex
}
func (b *buffer) Append(i int) {
b.mutex.Lock()
b.values = append(b.values, i)
b.mutex.Unlock()
}
在这样的结构中使用切片是否可以:
type buffer struct {
values []int
mutex sync.RWMutex
}
我问是因为当我们附加到切片时,我们有可能将切片复制到内存中的新位置。
在大多数 Go 编程中,人们会在不考虑性能的情况下分配回切片,以防 append
returns 新内存,因为切片是参考值。
b.values = append(b.values, i)
type buffer struct {
values []int
mutex sync.RWMutex
}
func (b *buffer) Append(i int) {
b.mutex.Lock()
b.values = append(b.values, i)
b.mutex.Unlock()
}