多线程访问许多文件加锁的问题,让我抓狂了!有实际经验者进

aclaire 2006-11-04 10:44:38
某个进程中会有多个线程会频繁的访问数量非常非常多的文件,要求当某线程对某个文件A进行
“写操作”时其他线程将不允许打开文件A(如可以触发个异常)。考虑到文件数目巨大,要
是对每个文件都配一把互斥锁的话那简直是噩梦,不知如何解决这个问题???
我想到下面几个解决方法:
1、用CFile::shareDenyWrite打开文件,但我试了一下,好像这个是用来防护多个进程对某个文件的访问的,而对于同一进程中的多个线程这种情况并无作用;
2、将所有访问文件的操作都由某个单独的线程T来做,其他线程要是想访问文件就发个消息给线程T,这样也就没有了同步加锁的问题,但我觉得,由于很多线程都会非常频繁的访问许多文件,只由一个线程T来处理所有IO,怕效率不行,线程T处理不过来;

愁死我了!!!!!
...全文
147 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
BoXoft 2006-11-04
  • 打赏
  • 举报
回复
写一个线程安全类封装文件操作,每个文件对应它的一个实例。
joykai 2006-11-04
  • 打赏
  • 举报
回复
可以考虑写一个专门写文件的类,然后用队列来传数据!

15,471

社区成员

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

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