Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何为进度条保存数据_C++_Multithreading_Qt - Fatal编程技术网

C++ 如何为进度条保存数据

C++ 如何为进度条保存数据,c++,multithreading,qt,C++,Multithreading,Qt,我的程序从服务器下载文件,并对其进行解析 对于下载文件,我有一个条,但我想做一个用于解析的条 解析需要花费大量的时间和精力,因此我的解决方案不必使用大量的精力 少数服务器->少数文件->文件中的行 也就是说,有一次,我从服务器上下载了大约4-5个文件,下载后,就开始解析 但当服务器数超过1时,我的程序会从两台服务器下载文件,因此我的文件数会增加2倍。服务器上的文件名相同,但当我下载文件时,我会将这些文件的名称更改为world+orginalfile.txt 我想到了这样的事情: 映射文件[]->

我的程序从服务器下载文件,并对其进行解析

对于下载文件,我有一个条,但我想做一个用于解析的条

解析需要花费大量的时间和精力,因此我的解决方案不必使用大量的精力

少数服务器->少数文件->文件中的行

也就是说,有一次,我从服务器上下载了大约4-5个文件,下载后,就开始解析

但当服务器数超过1时,我的程序会从两台服务器下载文件,因此我的文件数会增加2倍。服务器上的文件名相同,但当我下载文件时,我会将这些文件的名称更改为world+orginalfile.txt

我想到了这样的事情: 映射文件[]->线程下载->线程读取这些 线程从每个文件开始,所以如果服务器是2个文件,而文件是4个,那么这些线程 开始8x->发出初始信号发送文件、文件中的行、服务器号 +读取每行时发出CurrentLine、文件、服务器信号


那么,如何做到最好,获取大量数据并保存它+使用少量的计算能力?

在单独的线程中解析。解析时使用互斥递增某些计数器,或使用某些原子递增,例如

可能解析线程主要是IO绑定的。因此,它通常会等待磁盘IO。在这种情况下,互斥锁的小开销是微不足道的


在主GUI线程中,设置一些内容,例如。。。要每秒读取带有互斥锁的解析计数器,并更新进度条

您是说在解析这些线程时有一个计数器,即int counter吗?但是互斥不会减慢解析操作吗?以及如何通过std::async中的引用将指针作为arg发送到此var?