实践课
并发程序开发,大多数时候并发程序相比传统的单进程,执行速度更快,更合理利用资源,效率更好,所以必须了解掌握并发应用开发
1、如果一个执行单元得到的cpu越多,那它完成任务的时间越短,多进程可以获得更多的时间片缩减任务完成速度
2、如果是多进程程序,当某个进程因为阻塞挂起放弃时间片,就近原则,会转移到相邻进程,提高cpu使用效率
eg:使用多进程/多线程分段处理文件
在百度网盘上下载文件,多进程下载
1、分段处理,按照进程数量切割任务数量
2、进程任务相同,操作相同,但是文件操作的位置不同
任务:做一个拷贝图片的进程
编写process_copy的程序拷贝一张图片,该程序参数有三个参数——1、jpg1 2、jpg2 3、进程数量
步骤1、参数校验check_pram(char* sfile,int argc,int pronum)——源文件,参数数量,进程数量
1、验证源文件有效性access("文件名",F_OK)
2、参数数量验证(<3)
3、进程数量验证,进程数量>=缺省值,否则为3,不能大于100
process_copy的参数一般放在main函数中,argv[0]是./process_copy,argv[1]是jpg1,argv[2]是jpg2,argv[3]是pronum
步骤2、任务切片int blockcur(char* sfile,int pronum)——返回值为任务量
1、获取文件大小
int fd=open("a",O_RDWR); int fsize=lseek(fd,0,SEEF_END);
2、计算任务量
3、如果不能整除,让进程按字节分
主函数main.c
1、检验进程数
2、调用check_pram函数,验证参数
3、调用blockcur函数,返回值为任务量
4、调用process_ceate函数