Linux插座文件描述符通常适合哈希
Are Linux socket file descriptors generally suitable for hashing
我正在编程Linux多用户服务器,每个接收的连接返回一个int
,其中包含该连接的套接字文件描述符。我也有一个与每个连接相对应的UserConnection
对象。我正在使用Hash表(C STL unordered_map<int, UserConnection>
)来存储插座文件描述符(键)和UserConnection
对象(值)的键值对。
将插座文件描述符作为键放在哈希表中是否安全?Linux的套接字编号分配中是否有任何模式可以与哈希功能效果很好?
打开的手册页(2)解释说,最低未使用的文件描述符被分配给新文件描述符:
成功呼叫返回的文件描述符将是 当前未打开该过程的最低文件描述符。
socket(2)
中似乎缺少类似的杂语,但我认为这是一个相当安全的假设 - 同样适用于插座。
随后,创建插座将导致新插座单调增加的文件描述符,这将在第一个机会中重复使用。因此,这是哈希的理想用例。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 使用Qt C++计算类似Git的SHA1哈希
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 用C++将哈希表写入文件并从文件中恢复
- c++找不到具有相同哈希的无序集合元素
- 哈希文件递归并保存到矢量Cryptopp中
- 对 pair<pair<int,int>pair<int,int unordered_map进行哈希处理>>
- 直接在 unordered_map 的方法中使用哈希,而不是生成哈希的用户定义对象
- 如何为字符串生成唯一但一致的 N 位哈希(小于 64 位)?
- 使用对象的基类部分模板专用化对对象进行哈希处理::哈希
- boost::包含提升单元的元组的哈希值
- 使用 Key 对 C++ 中的哈希映射进行排序. 无法排序
- C++中的并发哈希表
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 在具有开放寻址的哈希表中插入节点 [优化逻辑]
- 与C++哈希表的基础知识混淆
- 如何为位集找到/实现一个好的哈希函数
- 对于短字符串来说,这是一个很好的哈希函数吗?
- 哈希映射适用于X个元素