高手请进,这个问题困扰我很长时间了,帮帮忙!!

xy328 2001-09-12 11:00:05
我最近在编一个包捕获和流量统计的程序,我现在碰到了一个棘手的问题,我在一个循环中去捕获通过网卡的包,并对对包进行分析,然后将分析结果插入数据库,可是由于数据库的插入操作比较费时,所以当我执行数据库插入操作时会用掉比较长的时间,这样的话,循环执行时两次循环之间的时间间隔比较大,这样我会漏掉许多包没有捕获,请问我该如何处理这种情况?我曾经试过用线程池的方法启动多现成执行数据库插入操作,可是效果还不太理想。有人告诉我说用内存映射文件,这个进程向文件插入数据,在用另一个进程完成数据插入数据库的操作,可我想了想,如果第一个进程插入数据的速度如果始终大于将数据插入数据库的第二个进程的速度的话,内存岂不是越占用越多,那点儿内存怎么够用?
请问我该怎么办?

...全文
43 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
workhelper 2001-09-14
使用多线程是完全可行的,类似的程序我做过。关键还是在一些处理细节上你可能没设计好。
workhelper@sina.com
回复
xy328 2001-09-13
文件怎么共享?
一个进程在文件尾插入,一个进程在文件头读取(插入数据库)并删除,插入还好办,删除好像不太好办吧。
回复
jazzrabbit 2001-09-13
想想dbase3的dbf的原理就知道怎么删除了
1.作标志删
2.pack到新file删
回复
jazzrabbit 2001-09-12
内存映射文件只会占有虚存,虚存在win95下至少有2G之大,通常应当是够用的.
另外,我想:退一步来说不用虚存,用直接文件的方法就远够用了,因为现在的硬盘速度还是远远超过网速的.只要你写在本地硬盘的文件上就不会出现这样的问题.
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-09-12 11:00
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……