在 FreeBSD 中,为了获取 TCP 套接字选项(在 tcp_usrreq.c 中的 tcp_ctloutput() 中),它需要像设置套接字选项一样使用 INP_WLOCK(inp) 进行锁定。由于获取 TCP 套接字选项仅从 tcp 控制 block 读取一些数据并且不更改数据,我很好奇为什么我们不使用 INP_RLOCK(inp) 的读取锁定以获得更好的性能。
最佳答案
如果您不对其施加写锁定,则选项可能会在读取时更改,从而产生虚假结果。
关于sockets - 为什么 FreeBSD 获取 TCP 套接字选项需要锁定写锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4880817/