kllo__ 2022-08-24 09:13 采纳率: 52.2%
浏览 63
已结题

qt ftp上传文件相关,如何定时队列上传多个文件

现在的场景是,不定时会有新文件来到指定文件夹,我设定是来一个新文件就触发信号,将文件的信息加入向量中,定时遍历这个向量,同时上传其中的文件,上传完毕后将文件remove出向量,但是我尝试之后,发现不可行,会报错

    if(!ToUploadFileVec.isEmpty())
    {
        for(int i = 0; i < ToUploadFileVec.size(); i++)
        {
            //上传文件
            FtpManager * ftp = new FtpManager("127.0.0.1", "anonymous", "", 21, this);

            QString localFile = ToUploadFileVec.at(i).filePath;
            ftp->S_uloadFile(localFile, "");
         //传输成功
            connect(ftp, &FtpManager::G_sndSucess, this, [=]()
            {
                qDebug() << __LINE__ << "remove";
                ToUploadFileVec.removeAt(i);
            });

}
}

请问这种同时上传多个文件到底应该如何实现

  • 写回答

3条回答 默认 最新

  • 来灵 2022-08-24 15:49
    关注

    使用生产者消费者模型,把代码重构一下
    生产者线程:来一个新文件就触发信号,将文件的信息加入向量队列中m_ToUploadFileVec(注意加锁),然后通知消费者线程处理事件
    消费者线程池:启动一组线程,并行上传多个文件。从向量队列中m_ToUploadFileVec(注意加锁)获取文件信息,上传,上传成功从m_ToUploadFileVec中删除当前向量元素

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月31日
  • 修改了问题 8月24日
  • 创建了问题 8月24日

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向