是这样的:我改别人的源码,是抢号软件他是这样弄的:
10个线程负责根据不同的条件扫不同的号,15个线程负责买号。10个扫号线程扫号,扫到的号放入一个TstringList公共变量中。买号线程不停的从该变量取号进而买号。现在的问题是 不够快!我觉得问题是:扫到的号add放进tstringlist中,扫号速度远远大于买号速度,这样,买号线程从tstriglist中取号时取得号很可能已经被别人买过了,我怎样才能取号的时候取最新的号?扫到的号放进一个什么类型的变量中,买号线程根据索引顺序的取号,才能取到最新号?或者你有什么不同的看法,都发表一下
10个线程负责根据不同的条件扫不同的号,15个线程负责买号。10个扫号线程扫号,扫到的号放入一个TstringList公共变量中。买号线程不停的从该变量取号进而买号。现在的问题是 不够快!我觉得问题是:扫到的号add放进tstringlist中,扫号速度远远大于买号速度,这样,买号线程从tstriglist中取号时取得号很可能已经被别人买过了,我怎样才能取号的时候取最新的号?扫到的号放进一个什么类型的变量中,买号线程根据索引顺序的取号,才能取到最新号?或者你有什么不同的看法,都发表一下
解决方案 »
- 我写了一个类似于ACDsee的看图软件,基本上全部完成了主要功能,现在有一个拖动的图片的问题捆饶了我请大家帮忙看看
- 程序中加入'更新動態IP地址'的功能?
- 用什么软件打包,能把隐藏文件打包进去?我用wise installation system 9.02不能把隐藏文件加入进去
- 急急急!!!关于datetimepicker的小问题。请指点,谢谢!
- 下面得语句为什么一运行,就死机。请高手指点
- 有问题啦!!
- @@@@@csdn的朋友有谁喜欢玩 百战天虫 online版?
- 可以把一个大系统里的子系统做成DLL吗?
- ~~~~~~~~~~~to 我本楚狂人~~~~~~~~~~~在不在?
- 求控件比较全的网站
- delphi中的委托该如何理解
- 设置Form的Parent属性后,Form上组件无法获得焦点的问题。
1、考虑线程安全问题,需要处理“锁”或临界区——从你的描述看,似乎你的代码并未做此处理;
2、由于频繁的“锁”或临界区处理,就有大量的系统调用(用户态转系统态需要占用CPU)而降低整体程序性能;
3、线程优先级的考量:扫号线程和买号线程优先级是否应有所区分?
建议这样设计:
1、扫号线程处理处理结果都提交给一个“号码提交线程”,该线程负责写入TStringList;
2、买号线程不直接访问TStringList取号,而统一通过“取号线程”访问TStringList取号后,逐一给每个买号线程发放号码;这只是大致流程,里面还有好多细节需要考虑:比如取号后是否需要remove,是否需要判断重复号等等。有些细节可能会影响性能。