同一秒钟启动40个线程(有源码)(200分)

  • 主题发起人 junrui2726
  • 开始时间
看过李维的一本书中写到,很长时间了,也是有人提到在一分钟内处理几万条数据
他做了一个试验,一分钟内处理了大概1千多条,但并没有提到用线程,只是你的机
器要足够快,另外可以把数据库的索引先去掉,不要带索引这样在写记录时会快不少
在处理完记录后再重建一下索引。
  不知是否合楼主的题,请参考。书名记不清了(我总是不记书名)
是讲delphi7的dbexpress的,不太厚,蓝白相间的书皮
 
to :crazymoon 你的qq是多少呢?
我的是 25370574
 
:crazymoon
你用for ...to...do 这个语句来创建线程 ,其实还是循环创建线程的呀,不是创建一个线程,这个线程执行完后再循环下一个线程的吗??我本来也这样做的,用
for k:=1 to 100do
begin
mytread1:=mytread.Create(false);
end;
但好象就是我所说的这样了,不知道是我感觉错了还是理解错了呢,大家再顶顶呀
 
mytread.Create(false);
就会创建一个线程
 
:刘麻子
你说清楚点好吗,应该怎么做呢?
 
这里确实是在循环中创建线程,每个线程处理完毕后销毁。
没有做成可以循环执行的线程,
这样做主要是思路简单一点。执行上应该问题不大。
这样可以达到你的要求,不过一秒中内执行100个线程,当然可能你的电脑会因此而崩溃。
其实,你的程序并没有错,只不过同步上有点问题。
/////////////////////////////////
把你的程序中的临界区去掉,对form1.Memo1的操作加上同步(或者先注释掉),执行了看看
能不能成功
 
我考虑了很久,觉得开100个线程的话可能会有问题,这样我觉得速度应该更慢,而且更不好控制吧,是不是应该开10个左右就行了,让每一个线程处理10条数据应该是没有问题的吧
 
早就说过了,多线程访问同一对象必须互斥, 竟然还有那么多继续人要你去掉所谓的临界区。
一些概念的简单描述 http://www.delphibbs.com/delphibbs/dispq.asp?lid=2392085
 
来自:刘麻子, 时间:2004-5-11 9:14:44, ID:2603592 | 编辑
mytread.Create(false);
就会创建一个线程
==================================================================
就是说,想创建一个线程就用上面的语句就可以了,不过,平时,
想之后还能对这个线程对象进行操作,那么可以用一个指针接收返回值。比如: A:=mytread.Create(false);
 
主线程处理吧,我看不出你的需求有什么必要去用线程
另外,如果你处理数据的同时还要在MEMO里显示,恕我直言,100条/秒做不到
 
哈哈,各位的发言都很好,但不论怎么说,要实现我这样的要求应该怎么实现呢?我现在要的是实现的方法,哈哈:):)——
 
建议创建一个线程就可以了
处理数理可在线程里面循环,像你那种
FADOConnection := TADOConnection.Create(nil);
这些东西都是需要创建时间,不能每次都创建的,应该放到循环外的
 
to :liujunzhang 你说的
FADOConnection := TADOConnection.Create(nil);
这些东西都是需要创建时间,不能每次都创建的,应该放到循环外的
是对了,但还不能达到这样的要求呀
 
楼主这样的想法感觉有些回到很底层了,这样的实现可行性不大,系统开销在考虑之列,另外开辟这么多的线程只为取记录,有些划不来!
 
多人接受答案了。
 
顶部