mutex的作用

来源:12-13 实现Connection

weixin_慕沐2155417

2022-09-13

一个conn对应一个协程,该协程的connection维护一个用户连接,所以应该不会有多协程并发写的问题吧
所以write函数加锁的必要性还是不太理解,老师能详细解释一下吗?

type Connection struct {
	conn         net.Conn
	waitingReply wait.Wait
	mu           sync.Mutex
	selectedDB   int
}


func (c *Connection) Write(bytes []byte) error {
	if len(bytes) == 0 {
		return nil
	}
	c.mu.Lock()
	c.waitingReply.Add(1)
	defer func() {
		c.waitingReply.Done()
		c.mu.Unlock()
	}()

	_, err := c.conn.Write(bytes)
	return err
}
写回答

1回答

Moody

2022-09-14

当时加这段确实是做的比较保守,预防了一下。

0
0

深入Go底层原理,重写Redis中间件实战

深入Go语言原理+Go重写Redis

474 学习 · 172 问题

查看课程