大量文件的异步写入的问题

geland 2004-10-29 10:11:29
我的程序会在相同时间里产生比较多的文件,然后数据也是不定时的到来,都需要记录到相应的文件中,而且对时间性能要求很高,以前使用同步写,发现处理起来比较慢,想改为异步写入,在使用WriteFileEx的时候碰到如下问题,在我查看文件结果的时候,发现只有最后一个数据被写入文件,不明白原因,有几个要问大家,我是使用回调函数来处理的,在回调函数里根据实际完成的字节数,调整对应文件的写入位置,就是Overlapped的Offset值,不知道这样行不行,还有就是我几次投入的WriteFileEx,我没有等待上一次写入结束,不知道这样行不行,几次投入的WriteFileEx,系统会不会排队,并按照投入顺序写入?朋友们帮我参考一下,提供更好的方法更好,谢谢

...全文
130 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
geland 2004-10-29
  • 打赏
  • 举报
回复
up

还想问一下,在异步写入的时候,我投递了一个WriteFileEx,然后立即调用关闭文件句柄,能不能写入呢?
superhandsome 2004-10-29
  • 打赏
  • 举报
回复
加锁撒。。SeekToEnd
oncsdn 2004-10-29
  • 打赏
  • 举报
回复
对 2. 补充:

在2中(即自定义消息中),打开文件、写、关闭文件
oncsdn 2004-10-29
  • 打赏
  • 举报
回复
1. 从 CWinThread 派生一个线程
2. 自定义消息用来接收发过来的消息 (你要写的内容)

3. 创建该线程。


4. 使用:
如时需要写东西,向那个线程发送消息(当然要把要写的发过去)

如此,windows 的用户界面线程帮你对要写的内容进行的排队,异步实现了!
geland 2004-10-29
  • 打赏
  • 举报
回复
我就是发现只有最后一个数据被写入文件
xenke 2004-10-29
  • 打赏
  • 举报
回复
又考虑了一下,觉得没把握,你应该自己试验来得到结果,几十行试验代码就搞定了
xenke 2004-10-29
  • 打赏
  • 举报
回复
上面的问题可以,完全可以,下面的问题你可以自己试验一下

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧