超高速多进程操作key为uint32 value为uint32的数据(用于监控系
发布时间:2020-12-14 05:57:51 所属栏目:Windows 来源:网络整理
导读:? 超高速多进程操作key为uint32 value为uint32的数据(用于监控系统) ? https://www.cnblogs.com/dearplain/ ? 1.初始化,在共享内存上生成40个1000数组,数组每个项8个字节,4字节是key,4字节是value。40个数组有不同的少于1000的素数hash key。 ? 2.从40
?
超高速多进程操作key为uint32 value为uint32的数据(用于监控系统)
?
https://www.cnblogs.com/dearplain/
?
1.初始化,在共享内存上生成40个1000数组,数组每个项8个字节,4字节是key,4字节是value。40个数组有不同的少于1000的素数hash key。
?
2.从40个数组找到节点,index为hkey=key%hash,如果存在,则更新,如果不存在,增加节点后更新。
?
3.compare and swap 支持set操作。(如果失败就重新走流程)
?
4.atomic add支持原子增减。
?
5.compare and swap 支持增加节点操作。(如果失败就重新走流程)
?
6.如果40个数组都找不到,也没有空闲节点,则失败。
?
7.收集,agent会几秒内收集所有的数据,并全部置零。根据下面的计算,支持在同一机器几秒内同时使用37000个key,能满足大部分需求。
? a = [0] * 40000 for i in range(1,1000000): done = 0 j = 0 for h in [998,997,991,983,982,977,976,974,971,967,964,958,956,953,947,944,941,937,934,932,929,926,922,919,916,914,911,908,907,904,898,892,887,886,883,881,878,877,872,866]: j = j+1 if a[i%h+(j-1)*1000] == 0: a[i%h+(j-1)*1000] = 1 done = 1 break if done == 0: print(‘error in:‘,i) break (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-8 – 在Win8和WP8应用程序中共享静态库
- 权限 – 如何解决NTFS移动/复制设计缺陷?
- windows-7 – 将命令行日志重定向到文件时出现`pause`命令问
- email – 从Windows服务器发送PHP邮件
- Windows环缓冲区无需复制
- windows-phone-7 – 不使用pin的Twitter身份验证
- 在Microsoft Visio中的用例中换行文本
- windows-server-2008 – Windows Server 2016 Essentials和
- windows – 让System Performance Data Collector Set保持运
- 在Windows上的Ubuntu上为Bash设置$PATH的问题(Linux子系统)
推荐文章
站长推荐
- windows-phone-7 – 在Windows Phone 7中引用合并
- 如何在Microsoft Visual C 2010 Express项目中创
- 在Windows和Mac OS X之间的Dropbox上共享Eclipse
- windows本地文件搜索神器 Everything 为什么速度
- windows-phone-7 – 将麦克风流保存为mp3或wave
- 从Windows PowerShell运行bash脚本
- TFS 2010构建失败,因为它无法加载Microsoft.Visu
- ‘ – ‘附近的语法不正确.(Microsoft SQL Serve
- windows – 无需登录即可在系统启动时启动应用程
- powershell – Win32_Product的替代品?
热点阅读