通过多线程把数据添加到数据库。下面两个方案,请给点意见。谢谢。(15分)

  • 主题发起人 主题发起人 yecloudy
  • 开始时间 开始时间
Y

yecloudy

Unregistered / Unconfirmed
GUEST, unregistred user!
实现目的:
通过多线程把多个串口的数据添加到数据库。
实现模型
一。只启用一个线程进行添加到数据库。
1。启用多个线程(比如说a,b,c,d).
2。a,b,c,d各自搜集数据。把搜集的数据各自添加到
对应的txt文件。(a.txt,b.txt,c.txt,d.txt)
3。假使a搜集完成,通知另一个线程e,e就把a.txt文件添加到数据库。
4。同时,假如b也搜集完成,通知e,要等e添加a.txt完后,再来添加b.txt.
二。每个线程直接添加到数据库。
利用ADO的BatchUpdate.
各个线程先insert到本机的缓存,
再各自update.
附加问一下,如果这种方案可行的话,是不是要用Tsession控件来控制。ADO能跟Tsession
合用吗?
 
分太少了吧?
使用多线程,主要看是否有必要,线程可不要滥用哦!
如果你的数据量很大,可以考虑使用多线程,但如果数据量不大,一个线程就可以了,
如果你需要用多个线程来进行分别的数据收集,那么你可以在添加到数据库的线程中引
入消息循环,来进行数据的入库,当然,你的其它采数的线程要使用消息来通知数据库
添加线程。你可以这么作:
定义一个消息,是让A、B、C、D采数线程给E发消息的,通过WPARAM或LPARAM参数来分辨
是哪个线程发出的消息;在E中,使用MsgWaitForMultipleObjects()函数来构造一个消息
循环,你需要把A、B、C、D 的句柄传给这个函数,该函数的返回值WAIT_OBJECT_0+nCount
就是表示传递给它的句柄数组对应的线程发出了消息,也就是说这个nCount和你传递给它
的线程句柄所对应的线程对应了,你根据这个就可以做相应的工作了,就这么简单,还用
每个线程去写数据库吗?
 
好象ADO里没有SESSION的事了。我写了一个基础的现成就没用SESSION。好想控件也没有session的属性
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部