现在手头有个项目,需要对数据进行采集处理存储数据采集需要对8个com口进行监听,每个com口最多一秒有5组数据到达,每组数据不超过15字节。在每组数据到达后需要调用一个函数对数据进行处理,处理后需要将其存放在数据库中,数据库可能为远程数据库,连接带宽低于1M现在准备利用多个线程扫描各个com口,大概是建立8个线程一个监听一个线程
有数据到达后积进行处理(调用函数),然后存盘
线程是利用VB的TMSCOMM控件进行控制(还没有试过不知道能不能使用)由于TMSCMM有事件 可以得知数据的到达,到达后即进行数据处理
但是考虑到数据量比较多,按程序流程,可能会出现正在处理数据时就有新的数据到达com口,或者正在更新数据库时有数据到达的问题,这样可能漏掉重要的数据用各个线程扫描各端口应该是没有问题吧,主要是在接下来的对数据处理存储时这样处理行不行啊,怎么样处理 数据处理存储 这一块?
才刚学线程,好多都不懂,希望各位给些意见,谢谢

解决方案 »

  1.   

    建议再使用两个线程和两个缓冲队列以确保数据不丢失。一个线程用作数据处理。一个线程用作远程数据库更新。
    两个缓冲队列分别用在这两个线程中,不妨称之为接收队列和更新队列。com口扫描线程只管接收数据并存放在接收队列中
    数据处理线程从接收队列中取出数据,调用函数进行处理,将结果存放在更新队列中
    远程数据库更新线程从更新队列中取出数据,相应的更新数据库。缓冲队列的大小则需要你依据实际情况,根据数据到达率和缓冲时间进行估算。