多线程下载编程的问题 请大家帮帮忙!!!

来源:百度知道 编辑:UC知道 时间:2024/05/30 18:16:41
制作的是一个下载工具 4个线程 有一个记录状态的数组
typedef struct tagDOWNLOADSTATE {
CString url; // 下载的网址
CString localpath; // 本地存放路径
CTime time; // 最近更新时间
LONG length; // 文件长度
LONG range[8]; // 分块标记
}DOWNLOADSTATE, *LPDOWNLOADSTATE;
DOWNLOADSTATE state;

请帮忙解释一下range[0-7]为什么如下标记 (FileSize是整个文件的大小) 谢谢
for (int i = 0; i < 4; i ++ ) {
state.range[i * 2] = i * (FileSize / 4);
state.range[i * 2 + 1] = (i + 1) * (FileSize / 4) - 1;
}
state.range[7] = FileSize - 1;

因为是四个线程,要想使四个线程尽可能同时下载,就需要把要下载的文件分成大致相等的四段。而要把文件分成四段,如果每段都要用一个开始点和一个结束点来标明的话,就需要八个标记来标出。上面的那个for循环就是计算出这8点标记在文件中的位置的。

厉害我一点不懂