现在手头有个项目,需要对数据进行采集处理存储数据采集需要对8个com口进行监听,每个com口最多一秒有5组数据到达,每组数据不超过15字节。在每组数据到达后需要调用一个函数对数据进行处理,处理后需要将其存放在数据库中,数据库可能为远程数据库,连接带宽低于1M现在准备利用多个线程扫描各个com口,大概是建立8个线程一个监听一个线程
有数据到达后积进行处理(调用函数),然后存盘
线程是利用VB的TMSCOMM控件进行控制(还没有试过不知道能不能使用)由于TMSCMM有事件 可以得知数据的到达,到达后即进行数据处理
但是考虑到数据量比较多,按程序流程,可能会出现正在处理数据时就有新的数据到达com口,或者正在更新数据库时有数据到达的问题,这样可能漏掉重要的数据用各个线程扫描各端口应该是没有问题吧,主要是在接下来的对数据处理存储时这样处理行不行啊,怎么样处理 数据处理存储 这一块?
才刚学线程,好多都不懂,希望各位给些意见,谢谢
有数据到达后积进行处理(调用函数),然后存盘
线程是利用VB的TMSCOMM控件进行控制(还没有试过不知道能不能使用)由于TMSCMM有事件 可以得知数据的到达,到达后即进行数据处理
但是考虑到数据量比较多,按程序流程,可能会出现正在处理数据时就有新的数据到达com口,或者正在更新数据库时有数据到达的问题,这样可能漏掉重要的数据用各个线程扫描各端口应该是没有问题吧,主要是在接下来的对数据处理存储时这样处理行不行啊,怎么样处理 数据处理存储 这一块?
才刚学线程,好多都不懂,希望各位给些意见,谢谢
解决方案 »
- 遍寻Compuware Devpartner Studio BoundsChecker 9.0.2 Professional无果
- MFC中控件都要拟定一个变量才可以用吗?如何拟定,有小例子最佳
- 请问高手,这样的监控如何可以做到??????????
- static控件,为什么不能使用自己定义的处理函数?
- 如:SEND(S,"GET HTTP://WWW.ABC.COM/NAME.ASP?NAME=ABC \R\N")
- vc环境下如何外部调用exe可执行文件?最好给个例子。
- 谁知道怎么在VC环境里把16*16的小图标干掉?(已有32*32在里面) 不要告诉我删除了再建一个32*32的
- 已经创建了一个类CStringArray3,怎么创建该类的对象并且这个对象要全局调用?
- 关于按钮与控件
- ListCtrl中怎样才能让鼠标选定的一行都亮?
- 高手进来看看,关于多播地址
- 为什么看不到资源了?急
两个缓冲队列分别用在这两个线程中,不妨称之为接收队列和更新队列。com口扫描线程只管接收数据并存放在接收队列中
数据处理线程从接收队列中取出数据,调用函数进行处理,将结果存放在更新队列中
远程数据库更新线程从更新队列中取出数据,相应的更新数据库。缓冲队列的大小则需要你依据实际情况,根据数据到达率和缓冲时间进行估算。