Linux C语言多线程大文件拷贝代码

Linux C多线程大文件拷贝代码,自己练习写的,留做纪念!

方法1:read、write实现

该方法下,由于read、write是两个系统调用,很有可能T1 read完,未来及write就失去了CPU资源,T2获取CPU进行读写操作后,T1再次获得CPU,

从而写至错误位置上。为避免该种情况,只能在每次读写之前修改文件读写位置。但lseek和read这两个系统调用间也可能失去CPU。

必须合为一个原子操作。pread、pwrite可实现该目的。

方法2:mmap实现

使用mmap将待拷贝文件映射至内存。创建T1、T2两个线程,一个线程负责拷贝上半区域,另一个线程拷贝下半区域。

由于被实现成数组,T1、T2之间没有交集部分,可做各自拷贝。只需划分拷贝位置即可。

 

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注