2011-02-02 36 views
2

在FreeBSD中,爲了獲取TCP套接字選項(在tcp_usrreq.c中的tcp_ctloutput()中),它需要使用INP_WLOCK(inp)鎖定,如設置套接字選項所做的那樣。由於獲取TCP套接字選項僅從tcp控制塊中讀取一些數據,並且不會更改數據,因此我很好奇爲什麼我們不使用INP_RLOCK(inp)的讀鎖來獲得更好的性能。爲什麼FreeBSD獲得TCP套接字選項需要鎖定寫鎖定?

回答

1

如果您沒有在其上寫入鎖定,則在讀取選項時可能會更改選項,從而產生假結果。