C++多线程操作文件遇到的问题!

对于一个文件是否可以有多个文件句柄?在读和写时是否有区别?对于每个句柄是否对应一个文件指针,还是一个文件只有一个文件指针?... 对于一个文件是否可以有多个文件句柄?在读和写时是否有区别?对于每个句柄是否对应一个文件指针,还是一个文件只有一个文件指针? 展开
 我来答
wwy1767
2012-12-18 · TA获得超过204个赞
知道小有建树答主
回答量:135
采纳率:100%
帮助的人:102万
展开全部
句柄和指针都可以有多个,读的时候可以同时读,但是写的时候要注意互斥,一次只能有一个进行写操作,并且写的时候不能读。这些可以使用mutex实现。
追问
有没有方法可以让多个线程在不加锁的情况下同时对同一个文件进行写呢?在网上有人说可以通过内存文件映射可以实现,但我尝试了,似乎不可以啊!如果你这方面了解的话,求解!谢谢!
追答
这个真不知道,多线程异步操作,还要保证结果一致,没试过
_whales
2012-12-19 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:508万
展开全部
文件指针有几种种类型
1)C的文件指针 FILE* 这个不是文件读写位置的指针,是FILE数据结构的指针
2)文件系统的文件指针
3)iostream 的流指针
分三种情况ifstream,iofstream,ofstream,
ifstream,一个读指针,ofstream一个写指针,iofstream一个读指针,一个写指针
不知两者之间有何关系。
文件句柄是Windows 的文件系统,每个打开的文件句柄有一个指针,指明当前的读写位置。
异步方式读写打开时,当读写的区域不同时,可以多线程同时读写,用,CreateFile,ReadFileEx,WriteFileEx,CloseHandle。这时,文件指针不起作用,在函数参数里指定读写位置。CreateFile打开时要指定异步方式读写。
内存映射写时,要同一数据块建两个映射,一个写入实际数据,一个拷贝数据(实现写时拷贝,把数据写入文件)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式