在golang net包https://github.com/golang/go/blob/master/src/internal/poll/fd_unix.go#L140中 有一个读锁。有人能解释一下这把锁的用途吗?据推测,客户端和服务器之间的每个连接都是唯一的,因此不应期望来自不同线程的多次读取尝试?我还假设每个连接都有一个 go 例程处理程序。
func (fd *netFD) Read(p []byte) (n int, err error) {
if err := fd.readLock(); err != nil {
return 0, err
}
defer fd.readUnlock()
Run Code Online (Sandbox Code Playgroud)
无锁提高效率
go ×1