多线程搜索
来源:互联网 发布:c9联盟知乎 编辑:程序博客网 时间:2024/05/17 08:03
#include <Windows.h>
#include <WinDef.h >
#include <iostream>
using namespace std;
DWORD dwTotalFileNum = 0;
DWORD WINAPI ThreadProc(LPVOID lpParameter);
void Fun(WCHAR* pszDirName);
CRITICAL_SECTION m_cs;
void TraversalDir(WCHAR *szDir)
{
WCHAR szFilePath[MAX_PATH] = L" ";
WIN32_FIND_DATA FindFileData = {0};
HANDLE hListFile;
WCHAR szFullPath[MAX_PATH] = L" ";
//构造代表子目录和文件夹路径的字符串,使用通配符“*”
wcscpy_s(szFilePath, szDir);
wcscat_s(szFilePath, L"//*");
hListFile = FindFirstFile(szFilePath, &FindFileData);
if(hListFile == INVALID_HANDLE_VALUE)
{
printf("Invalid File Handle. GetLastError reports %d/n", GetLastError ());
return ;
}
else
{
do
{//过滤“.”和“..”,不需要遍历
if(lstrcmp(FindFileData.cFileName,TEXT(".")) == 0 || lstrcmp(FindFileData.cFileName,TEXT("..")) == 0)
{
continue;
}
/* EnterCriticalSection(&m_cs);*/
wsprintf(szFullPath,L"%s//%s",szDir, FindFileData.cFileName);
/*
LeaveCriticalSection(&m_cs);
*/
if(!(FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))
{
_putws(szFullPath);
printf("/n");
/*
EnterCriticalSection(&m_cs);
dwTotalFileNum++;
LeaveCriticalSection(&m_cs);*/
}
else
{
//TraversalDir(szFullPath);
Fun(szFullPath);
}
//如果是目录,则递归调用,列举下级目录
}while(FindNextFile(hListFile, &FindFileData));
}
FindClose(hListFile);
}
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
TraversalDir((WCHAR*) lpParameter);
free(lpParameter);
return 0;
}
void Fun(WCHAR* pszDirName)
{
int len = (wcslen(pszDirName) + 10) * sizeof(WCHAR);
WCHAR *tp = (WCHAR*)malloc(len);
memset(tp, 0, len);
wcscpy(tp, pszDirName);
HANDLE hProducerThread = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE )ThreadProc, tp, 0, NULL);
}
int main()
{
InitializeCriticalSection(&m_cs);
DWORD dwStartCurrTime, dwEndCurrTime;
dwStartCurrTime = GetCurrentTime ();
TraversalDir(L"C:");
//printf("/n%d/n", dwTotalFileNum);
dwEndCurrTime = GetCurrentTime();
printf("The cost time is :%d/n", dwEndCurrTime - dwStartCurrTime);
DeleteCriticalSection(&m_cs);
return 0;
}
- 多线程搜索
- ParalellMultiSearcher:多线程搜索
- ParalellMultiSearcher : 多线程搜索源代码
- Sphinx多线程分布式搜索
- Sphinx多线程分布式搜索
- 多线程编写文件搜索器
- java CountDownLatch 多线程文件搜索
- lucene-对多个索引的搜索和多线程搜索
- lucene-对多个索引的搜索和多线程搜索
- lucene-多字段、多索引搜索与多线程搜索
- Sphinx 搜索性能优化 —— 多线程搜索
- lucene-对多个索引的搜索和多线程搜索
- 改进后的多线程文件搜索
- win+linux+socket多线程搜索服务器端文件
- Python 多线程搜索txt中的内容
- VB.Net程序设计:多线程处理,搜索局域网的计算机。
- 运用多线程技术实现文件的快速搜索
- 用Callable和Future实现多线程文件搜索
- iframe属性
- redhat 9.0中安装gcc
- MSchart, VS的图表控件
- 如何选择开源许可证?
- 网络安全;嵌入式开发;电子商务
- 多线程搜索
- 动态增加和删除table中的元素。
- CentOS5.6-时间修改
- 这是我的第一篇博客。
- 将本地txt文件当作ASP.net数据源,并用gridview分页显示。
- linux基本问题
- 数组排序
- tar命令小解
- 思维导图工具