如何保持数据的进度条
How to keep data for progress bar
我的程序从服务器下载文件,并解析它。
对于下载文件,我有一个酒吧,但我想做一个酒吧解析。
解析需要大量的时间和能量,所以我的解决方案不需要使用大量的能量。
few servers -> few files -> line in file
。一次,我从服务器下载文件(大约4-5个文件),下载后,就开始解析。
但是当服务器超过1时,我的程序从两个服务器下载文件,所以我有2倍多的文件。服务器上的文件名是相同的,但当我下载文件时,我将这些文件的名称更改为"world"+" originalfile .txt"
我想过这样的事情:map<int server,std::map<int file(<make it enum),{current line, max lines} >> (struktura)
因为当读取文件时,我想让emit发送数据到窗口。当开始阅读时,我想发送(file,lines_in_file,server)
读取时发送(file,current_line,world)
然后在读取该数据的窗口中,将该数据推送到某个变量(如上面的示例),并运行第二个函数来计算进度条。
servers[] -> files [] -> thread download -> thread reading每个文件启动线程,所以如果服务器是2个,文件是4个,这些线程启动8x) ->发出init信号(发送文件,lines_in_file,server_number)+在逐行读取
时发出(currentLineWhenReading,file,server)信号
那么如何使它最好,获得大量的数据并保存它+使用很少的功率来计算这个呢?
在单独的线程中解析。在解析时增加(使用互斥锁)一些计数器(或使用一些原子增量),例如在这个答案中。
解析线程可能主要是IO绑定。所以它通常会等待磁盘IO。在这种情况下,互斥锁的小开销是微不足道的。
在主GUI线程中,设置一些东西(例如一些Qt定时器…)来读取每秒的解析计数器(与互斥),并更新进度条
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- 我觉得我放入结构中的输入代码可以压缩,关于如何在保持代码简短的同时保持数据个性化的任何建议?
- 插座 - 数据传输后保持插座打开
- 是否有一些有意义的统计数据来证明保持有符号整数算术溢出未定义是合理的
- 在cython调用之间保持数据帧的状态
- 指向成员函数的指针与指向数据成员的指针有何不同
- C 备用数据以保持对象相同的大小
- 从总计中减去旧数据以保持正确的总计
- 一种按排序顺序保持元素的数据结构,支持快速插入和计算连续元素之间的最大差异
- c++设置了保持插入顺序的数据结构
- 用于插入大部分排序数据的数据结构,这些数据将保持排序顺序
- 对对象的数据成员的shared_ptr是否使数据成员在对象的生存期之后保持活动状态
- 在这种情况下,我如何才能保持良好的数据封装
- 在两个数据结构中保持相同的唯一指针
- 保持数据迭代器的矢量
- 如何保持数据的进度条
- 显示,更改数据和保持QQmlListProperty在qml
- 保持主机数据完整,同时传输到CUDA GPU
- 当我离开该方法时,来自静态向量的数据保持不变
- 我如何保持我的QAbstractTableModel与我的数据存储同步