标题:多线程调用CopyFileEx拷贝大文件(超过1GB的文件)回调函数100%时,等一分钟左右才返回CopyFileEx的返回值
作者:lwei24
日期:2021-08-20 10:26
内容:
各位大佬,请帮帮忙,如下代码,在多线程调用CopyFileEx拷贝大文件(超过1GB的文件)回调函数的拷贝进度值到达100%时,为什么没有立即返回CopyFileEx的返回值,而是等一分钟左右才返回CopyFileEx的返回值,导致了主线程一直在等子线程,出现了界面假死的情况。欢迎各位大佬指点一下,小弟在此不胜感激了!
BOOL bRet = CopyFileEx((LPCWSTR)src,(LPCWSTR)dst, CallBackCopyProgressFunc, this, (LPBOOL)m_bCancel, COPY_FILE_FAIL_IF_EXISTS);
qWarning()
#1 [hitler++ 08-21 20:28]
如果不是用的固态硬盘,任何涉及磁盘操作用多线程只会导致速度更慢,除非系统已经缓存过数据了,否则多个线程抢占物理磁头,IOPS一共才20多,(100%时还在等待,应该是系统还在flush数据到硬盘)
#2 [snow_man_0 08-23 07:59]
可以自己写一个CopyFileEx函数,不用别人的
#3 回 hitler++ 的帖子 [lwei24 08-25 11:13]
hitler++:如果不是用的固态硬盘,任何涉及磁盘操作用多线程只会导致速度更慢,除非系统已经缓存过数据了,否则多个线程抢占物理磁头,IOPS一共才20多,(100%时还在等待,应该是系统还在flush数据到硬盘)
(2021-08-21 20:28)
请问有什么办法可以优化吗?
#4 回 snow_man_0 的帖子 [lwei24 08-25 11:20]
snow_man_0:可以自己写一个CopyFileEx函数,不用别人的 (2021-08-23 07:59)
bool copyFileA(QString &srcPath, QString &dstPath)
{
QFile file(srcPath);
qWarning()
#5 回 lwei24 的帖子 [snow_man_0 08-28 03:18]
lwei24:bool copyFileA(QString &srcPath, QString &dstPath)
{
QFile file(srcPath);
qWarning()