高手,请进!

WuOu 2006-11-30 10:26:05
假设一个文件有80K大小,现在有一个线程从0地址开始写数据,同时另一个线程从0x20地址开始写数据,也就是说,这两个线程同时往文件内写数据,行不行?如果行,那么文件里面的文件指针(定位)怎么管理?
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangk 2006-11-30
  • 打赏
  • 举报
回复
每个线程用独立的CreateFile即可,不用处理复杂了。
WuOu 2006-11-30
  • 打赏
  • 举报
回复
如果,使用STL中的fstream流,又如何作到这一点!!!
WuOu 2006-11-30
  • 打赏
  • 举报
回复
是使用DuplicationHandle函数吗??
WuOu 2006-11-30
  • 打赏
  • 举报
回复
To wangk(倒之):
如何复制句柄???
wangk 2006-11-30
  • 打赏
  • 举报
回复
不要用同一个句柄操作。用CreateFile的FILE_SHARE_WRITE标记,至于文件区域可以用LockFile锁住。
WuOu 2006-11-30
  • 打赏
  • 举报
回复
会存在有这种情况:
线程1写到0x4地址的时候,文件指针为0x4,这时线程1停下来让进程2执行。
线程2从0x20开始写,写6完个字节后停下来让线程1执行,这时文件指针为0x26
现在线程1开始执行,由于当前的文件指针为0x26,所以数据被写到0x26地址以后,而不是我们想要的先前的0x4地址以后,怎么解决这个难题?????!!!!!!!!!!!!
louifox 2006-11-30
  • 打赏
  • 举报
回复

看看OVERLAPPED你就知道如何定位了。

15,471

社区成员

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

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