首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在跨平台下用多线程在Qt中写入同一文件的不同区域?

如何在跨平台下用多线程在Qt中写入同一文件的不同区域?
EN

Stack Overflow用户
提问于 2012-04-11 08:08:12
回答 2查看 1K关注 0票数 0

我需要一个跨平台的解决方案,多线程写到同一个文件并发,至少是Windows和Mac。不同的线程写入不同的文件区域。

文件有点大。可能是几GB或几百MB。所以MMF不合身。

QFile是一个跨平台的重叠。我已经搜索了QFile文档,没有股票写入选项。

在Windows下,这可以通过CreateFile使用FILE_SHARE_WRITE选项来完成。Mac呢?

Qt支持这个吗,还是我应该自己进行封装?如何在Mac下做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-11 08:38:55

您可以将QFileQReadWriteLock (文档)一起使用。

票数 0
EN

Stack Overflow用户

发布于 2012-04-11 10:31:51

在Mac上,多个进程或线程打开一个文件并在其中写入是没有障碍的,除非这些进程或线程特别选择采用协作锁定方案。这种可选择的合作锁定方案被称为“咨询锁定”。例如,用于锁定整个文件的flock()和用于字节范围锁定的fcntl() .

取决于QFile是如何实现的,它可能允许多线程写入就像现在一样好。它将不得不采取特别步骤来拒绝它。

当然,如果线程或进程不通过某种方式进行协调,那么它们就有可能覆盖和损坏彼此的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10102169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档