qt5 如何多个线程读取同一个文件

韩垒垒 发布于 06/26 19:23
阅读 150
收藏 0
Qt

我的使用场景需要通过网络同时给多台设备升级,每台设备创建一个单独的线程来处理,但是只有一个线程可以读取成功,多个线程一起读的时候就挂掉了,有没有这方面处理经验的可以指点下?

以下是问题补充:

@韩垒垒:开始的描述可能有些不准确,我这边是用一个封装的socket类对象连接到设备上传文件过去升级,每台设备对应类的实例,单个实例连接设备升级时正常,选择多台一起升级的时候就出错 (06/26 19:47)
加载中
0
mr_chip
mr_chip
你的文件在服务器上吗?然后服务器是多线程的还是单线程实现的?
韩垒垒
韩垒垒
我的文件在本地
0
幻舞奇影
幻舞奇影

如果文件不大,你应该以字节流的形式加载文件到内存,然后多线程同时读取,相当于批量上传前,单线程加载弄个进度条。否则多线程读取及时做到了(在读取文件时不启用锁定文件的方式)如果太多线程读取也会造成读取效率很低

韩垒垒
韩垒垒
目前问题已经解决了,我刚开始的描述可能有些不准确,Qt的文件读操作(只有读操作,写不行)是线程安全的,我一开始并不是使用多个线程进行读取的,所以会出现错误。现在使用线程类重新把之前的业务流程修改了下,暂时没有什么问题了。 你的办法应该还可以进一步提高整体效率,后边需要优化的时候会考虑。感谢你的思路分享。
c
chenzhengxi
正解
0
不喜欢暴力运动
不喜欢暴力运动
多线程读取文件的时候你可以给文件加锁 如果有锁sleep1 没有锁就执行业务代码 然后释放锁
返回顶部
顶部