应用并发的场景有很多,下载文件就是一个很常见的并发场景。
为什么会想写多线程下载器呢?不知道你用过 IDM(Internet Download Manager)没,我刚使用 IDM 时,就被它的下载方式吸引了。
用 IDM 下载文件时,能够直观地看到它的下载过程:固定用 N 个线程下载文件,一开始先将文件分为 N 段,每段用一个线程下载,当某一段下载完成之后,对应的线程就空闲了,此时怎么做呢?从剩余的 N - 1 段中取出最大的一段,一分为二,这样就又有了 N 段的数据,让空闲的线程去下载新划分出来的这一段。
每当有一个线程完成下载任务时,就不断从剩余的部分中划分出一段给它下载,直到整个文件的所有部分都下载完毕。
Realize modular programming with functions
用函数输出以下结果:
*****************
How do you do!
*****************
#include<stdio.h>
int main()
{
void print_star();//函数的声明
void print_message();//函数的声明
print_star();
print_message();
print_star();
return 0;
}
void print_star()
{
printf("*****************\n");
}
void print_message()
{
printf("How do you do!\n");
}
1 / 2