使用 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;