首页 > 编程知识 正文

c语言实验多线程下载器,多线程下载工具

时间:2024-04-24 11:43:09 阅读:333816 作者:MGOV

本文目录一览:

[高分,急]C语言,如何实现多线程,有具体方案,请提供!

你这个问题可是超过200分的啊,

这个往大了说是一个比较复杂的设计方案。

实际上C语言是没有多线程的概念的,但是我们可以通过Task来实现多任务。

简单的说,可以采取以下方案:

定义一个主Task,将其置为常驻Task,用以进行Task调度和Task的启动/终了和交互的管理。

定义一个Task优先级列表,用优先级来作为Task调度和管理的基础。

定义一个共享域,和相应的事件分发/广播/传递的管理机制,由主Task来实现各Task间的事件传递。

定义3个List,实现Active,Ready,Dead的Task的管理和调度。

定义各普通Task,包含Task基本信息:Task的栈指针,Task情报,Task存储空间大小,Task的优先级,Task的事件列表(定义可以接收/发送的事件,以及可以排队的事件的个数),以及如果需要的话可以定义Task的从属(父子)关系。

另外还有几个注意点:

1. 通过C的临界域(critical section)结合PV操作来实现某些Task的原子性处理要求。

2. 通过Signal来实现中断和再开

3. 如果需要处理中断和再开的话,一定要注意现场保护

4. 同优先级的Task可以通过时间片轮循的方式进行多任务实现

暂时就想到这么多,有不明白的通过消息进一步交流吧:)

c语言如何才能后台下载文件,比如有一个文件www.jjjjj.com/a.zip。怎样才能用c语言

这绝不仅仅靠C语言能够做到,需要配合操作系统提供的多线程编程。简单说下思路吧:

主线程由于控制主程序,并且可以显示下载进度;子线程用于做文件的下载,并且要每隔一段时间与主线程通信,把进度汇报给主线程。

至于线程的控制、以及文件的下载(涉及到所采用的网络通信协议),需要结合你所使用的操作系统提供的API了。

C语言多线程实现

多线程随机选号程序

以下程序运行后看起来比较有意思,像一个随机选号程序,但不是完全按照问题所说的写的 可供参考,要改很容易

//多线程随机选号程序示例

#include stdio.h

#include Windows.h

#include ctime

#include cstdlib

#include process.h

bool g_run = true; //是否运行

void userInput(void*) //监视输入的线程函数

{

while (true)

{

if (getchar()=='n') //是否输入回车

{

g_run = !g_run; //回车运行 回车暂停

}

Sleep(10); //延迟

}

}

int main()

{

srand(time(0)); //随机数种子

_beginthread(userInput,0,NULL); //开线程

while (true)

{

if (g_run)

{

system("cls"); //清屏

int t = rand() % 1000+ 1;//1-1000的随机数

printf("n %d",t); //输出

}

Sleep(50); //延迟50毫秒

}

return 0;

}

百度网盘多线程下载,容易理解的,本人不会c语言c++等

线程可以理解为下载的通道,一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器会对总下载线程进行平均分配。不难理解,如果你线程多的话,那下载的越快。现流行的下载软件都支持多线程。

多线程下载的原理是这样的:通常服务器同时与多个用户连接,用户之间共享带宽。如果N个用户的优先级都相同,那么每个用户连接到该服务器上的实际带宽就是服务器带宽的N分之一。可以想象,如果用户数目较多,则每个用户只能占有可怜的一点带宽,下载将会是个漫长的过程。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。