多线程写同一个文件

66i88 2018-09-10 08:53:43
多线程写同一个文件,不阻塞,可以延迟一下稍后再写。

怎么处理好?

谢谢。
...全文
2882 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤客天涯 2019-06-13
  • 打赏
  • 举报
回复
多线程写同一文件,主要是同步锁问题,建议写文件时,把写的内容放队列中,做好锁,每次都往队列尾加,另启一线程专门写文件,从队列头取,依次写入文件就行了
u010165615 2019-06-12
  • 打赏
  • 举报
回复
用异步编程应该安全吧
  • 打赏
  • 举报
回复
防止冲突是第一位的。否则惨不忍睹。 互斥体。 临界区。 信号量等等技术
5-cOin 2019-06-02
  • 打赏
  • 举报
回复
CreateFileMapping
然后线程同步
半道道 2018-10-16
  • 打赏
  • 举报
回复
内存映射分段写,队列阻塞加锁写
danscort2000 2018-09-19
  • 打赏
  • 举报
回复
日志文件是怎么处理的,你就怎么处理
很简单,一把锁,一个缓冲队列
encoderlee 2018-09-14
  • 打赏
  • 举报
回复
一个线程专门负责写文件,再创建一个队列容器,其它线程需要写东西的时候就往这个队列里扔数据,写文件的线程负责读队列里的数据并写入到文件
smwhotjay 2018-09-12
  • 打赏
  • 举报
回复
没搞过同时读写一个文件。多写 更麻烦了
worldy 2018-09-12
  • 打赏
  • 举报
回复
开辟整个文件的内存,将内存分段,每个线程只能写自己的一段,全部写完,再保存到文件
z0123501501 2018-09-12
  • 打赏
  • 举报
回复
如果文件不大,就先复制文件内容到stringstream流。然后对这个流进行操作,最后在适当时机保存回去文件。
如果文件特别大,就创建一个文件管理类,做个读写队列控制,这样是最安全的。
boylafong 2018-09-11
  • 打赏
  • 举报
回复
如果是写日志文件类的要用锁
ATiS_DXT 2018-09-11
  • 打赏
  • 举报
回复
互锁 只有当前线程写完了 其他线程 才能继续写
sevancheng 2018-09-11
  • 打赏
  • 举报
回复
参照多线程下载,创建内存文件映射,分块写
zgl7903 2018-09-11
  • 打赏
  • 举报
回复
还有一种方式 可以每个线程独立写一个文件, 全部完了再合并成一个文件
zgl7903 2018-09-11
  • 打赏
  • 举报
回复 1
用一个线程专门负责文件写, 其它线程将数据包以结构体方式推入队列, 负责写的线程从队列中取数据操作

15,471

社区成员

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

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