多缓冲区读写文件

 

使用 OVERLAPPED 来读写大文件还错,如果是小文件性能不是特别好 , 这个仅仅是自己电脑的测试.

用多缓冲区来读写会比较快

 

一个例子:

const int __BUFFSIZE = 8192;            //存放大小
const int __LEN = 10;                   //10个缓冲区
struct
{
    struct{
        char *data;                    //读入的地方
        int readbytes;                 //读入字节数
    }buff[__LEN];                      
    HANDLE empty;                     //2个信号量
    HANDLE stored;
} share;

unsigned int __stdcall read_thread(void* param)
{
    HANDLE hFile = (HANDLE)param;
    int i = 0;
    DWORD bytesReaded = 0;
    DWORD ret = 0;
    while(1)
    {
        WaitForSingleObject(share.empty,-1);

        //读取__BUFFSIZE 到缓冲区
        ret = ReadFile(hFile,share.buff[i].data,__BUFFSIZE,&bytesReaded,NULL);

        //每次把读取的字节数记录下来, 如果是0 则读完
        share.buff[i].readbytes = bytesReaded;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值