golang中map使用channel串行化多读多写

type MyMap struct {
	Data map[int]string
	ch   chan func()
}

func NewMyMap() *MyMap {
	m := &MyMap{
		Data: make(map[int]string),
		ch:   make(chan func()),
	}
	go func() {
		for {
			(<-m.ch)()
		}
	}()
	return m
}
func (m *MyMap) add(num int, data string) {
	m.ch <- func() {
		m.Data[num] = data
	}
}
func (m *MyMap) del(num int) {
	m.ch <- func() {
		delete(m.Data, num)
	}
}
func (m *MyMap) find(num int) (data string) {
	m.ch <- func() {
		if res, ok := m.Data[num]; ok {
			data = res
		}
	}
	return
}

猜你喜欢

转载自blog.csdn.net/Edu_enth/article/details/85235490