测试程序代码如下:
请各位给指点指点.//多线程写入
void Cfilemap_testDlg::OnBnClickedMultthreadfile()
{ //创建文件
HANDLE hFile = CreateFile( "F:/test.txt",
GENERIC_WRITE | GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL); //得到文件大小
DWORD dwFileSize = GetFileSize(hFile, NULL); //创建文件hFile文件对象的映射对象 hFileMap
HANDLE hFileMap = CreateFileMapping(hFile,
NULL,
PAGE_READWRITE, //可读写
0,
dwFileSize + sizeof(WCHAR),//文件大小
NULL);
//将文件数据影射到进程的地址空间
PBYTE pvFile = (PBYTE) MapViewOfFile(hFileMap,
FILE_MAP_WRITE,
0,
0,
0);
//开始操作文件
PBYTE pchANSI = pvFile;
for( int i = 0 ; i < 1000; i++)
{
*pchANSI++;
CreateThread( NULL, 0, ThreadFunc, LPVOID(pchANSI), 0, NULL);
} //文件操作完成
//撤消进程地址空间中的文件数据影射
UnmapViewOfFile(pvFile);
//关闭文件
CloseHandle(hFileMap);
// Remove trailing zero character added earlier.
SetFilePointer(hFile, dwFileSize, NULL, FILE_BEGIN);
SetEndOfFile(hFile);
CloseHandle(hFile);
}
//线程函数
DWORD WINAPI Cfilemap_testDlg::ThreadFunc( LPVOID lpParam )
{
PBYTE pchANSI = (PBYTE)lpParam; *pchANSI = 'a'; return 0;
}
请各位给指点指点.//多线程写入
void Cfilemap_testDlg::OnBnClickedMultthreadfile()
{ //创建文件
HANDLE hFile = CreateFile( "F:/test.txt",
GENERIC_WRITE | GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL); //得到文件大小
DWORD dwFileSize = GetFileSize(hFile, NULL); //创建文件hFile文件对象的映射对象 hFileMap
HANDLE hFileMap = CreateFileMapping(hFile,
NULL,
PAGE_READWRITE, //可读写
0,
dwFileSize + sizeof(WCHAR),//文件大小
NULL);
//将文件数据影射到进程的地址空间
PBYTE pvFile = (PBYTE) MapViewOfFile(hFileMap,
FILE_MAP_WRITE,
0,
0,
0);
//开始操作文件
PBYTE pchANSI = pvFile;
for( int i = 0 ; i < 1000; i++)
{
*pchANSI++;
CreateThread( NULL, 0, ThreadFunc, LPVOID(pchANSI), 0, NULL);
} //文件操作完成
//撤消进程地址空间中的文件数据影射
UnmapViewOfFile(pvFile);
//关闭文件
CloseHandle(hFileMap);
// Remove trailing zero character added earlier.
SetFilePointer(hFile, dwFileSize, NULL, FILE_BEGIN);
SetEndOfFile(hFile);
CloseHandle(hFile);
}
//线程函数
DWORD WINAPI Cfilemap_testDlg::ThreadFunc( LPVOID lpParam )
{
PBYTE pchANSI = (PBYTE)lpParam; *pchANSI = 'a'; return 0;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货