我正在编写一个Linux多用户服务器,并且每个接受的连接都返回一个包含该连接的套接字文件描述符的 int
. 我还有一个对应于每个连接的 UserConnection
对象 . 我使用哈希表(C STL unordered_map<int, UserConnection>
)来存储套接字文件描述符(键)和 UserConnection
对象(值)的键值对 .
将套接字文件描述符作为密钥放在哈希表中是否安全? Linux的套接字号分配中是否有任何模式可能无法与散列函数一起使用?
1 回答
manual page for open(2)明确指出最低的未使用文件描述符被分配给新文件描述符:
socket(2)
似乎缺少类似的措辞,但我认为这是一个相当安全的假设 - 同样适用于套接字 .接下来,创建套接字将导致单个增加的文件描述符,对于新的套接字,将在第一次机会时重用 . 因此,这是散列的理想用例 .