博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net 4 TPL初体验
阅读量:6325 次
发布时间:2019-06-22

本文共 768 字,大约阅读时间需要 2 分钟。

公司新防伪平台需要高效生成14位不重复、离散度高的全数字的防伪码,要求可以不依赖数据库排除重复码,要求快速反算(1秒以内),先用老方法单线程实现了;但是效率比较低每秒最快18个(本机配置是:intel core i5 m480,6G内存 / Win 7 64位旗舰版),在本机的虚拟机下最快每秒55个(intel core i5 m480,2G内存 / Win2003)。晕哦,64位系统咋表现不行哦,(32位Win7没用过^_^)。生产环境要求每秒要生成几百个,我又晕,怎么办呢。使用多线程?太考究功力了,线程同步和数据库异步存取等等难搞的问题会把人搞晕的。突然灵光一闪,试试.Net 4里TPL库吧,并行编程啊。一试效率立即提升了几十倍,但是出现了以下问题:

1、每批次生成5000个,有时一个批次生成不完5000个,可能只有3800.仔细看了下数据结果发现5000个自动被分成了2个批次,一个3800,一个1200.总体数据是对的。

2、有时生成几十万个以后,会出现跳码的现象(某个序列号没有出码)。

3、生成的码占用的序列号是乱的。

后来查了书,一句话引起了我注意:“TPL基础结构相当智能。如果它判断任务集没有从并行运行中受益,将选择按顺序执行。”,将最大的并行数设为1,问题都解决了,序号也有序列,只是效率下来了,不过还是超过了生成环境的要求。

 

记录下来,备忘,也给大家一个参考吧。TPL还真是个好东西,简化了线程的操作,提升了程序效率。牛,新技术果然很牛叉。看不懂别怪我啊,程序要跟具体业务挂钩的,如果你不懂防伪码,就不用管实现,看看效果就OK了,有需要自己试试TPL编程。希望懂的童鞋可以多多找我交流,我也才入行不久。如果实在是耽误了您宝贵时间又不知所云的话,委屈您高抬贵手点一下推荐吧!  ……    ^_^

 

附新老程序截图:

 

 

 

转载地址:http://odmaa.baihongyu.com/

你可能感兴趣的文章
一个全新的拖拽分页—艺术啊
查看>>
Linux学习之CentOS(三十)--SELinux安全系统基础
查看>>
LVS+keepalived高可用群集
查看>>
jQuery库简介
查看>>
win7系统设置电脑不待机状态的操作方法
查看>>
nginx+php安装配置
查看>>
LAMP+Centos6.5上安装zabbix
查看>>
android判断网络连接状态的三种方法
查看>>
ZOJ Monthly, March 2013 解题报告
查看>>
LaTex表格 Itemize&&enumerate
查看>>
Spring Boot中@OneToMany与@ManyToOne几个需要注意的问题
查看>>
文件传输协议之FTP
查看>>
Openstack 安装部署指南翻译系列 之 Glance服务安装(Image)
查看>>
Java 使用POI实现execl的导入导出数据实践
查看>>
Unity3D游戏开发之伤害数值显示
查看>>
如何在Linux上搭建一个基于Web的轻型监控系统
查看>>
linux基础命令使用
查看>>
zabbix简单检测
查看>>
other模块的网络请求业务封装工具类
查看>>
Windows进程崩溃问题定位方法
查看>>