[文章資訊]
馮傑2004-07-30
出處:天極網方舟
本文採用多執行緒技術實現檔案的快速搜尋,**量很少,執行效率極高
[正文]
1 2以下介紹其在vc平台下的具體實現:
1.搜尋用到兩個win32的兩個函式
handle findfirstfile(lpctstr lpfilename,lpwin32_find_data lpfindfiledata );
bool findnextfile( handle hfindfile, lpwin32_find_data lpfindfiledata );
2. 建立執行緒函式
首先要定義執行緒的引數結構用於檔案資訊的傳遞:
typedef struct tagthreadparam threadparam m_param;
因為執行緒要操縱全域性變數,所以定義互斥體:
cmutex m_mutexthreadcount,m_mutexthreadparam,m_mutexpath;
如果搜尋完畢或搜尋終止,要有事件通知,於是建立乙個事件:
cevent m_event(false,false,null,null);
uint uthreadcount=0;//產生的執行緒數
cstringarray m_strpatharray;//存放搜尋到的檔案路徑陣列
//執行緒函式
uint getfilepaththreadproc(lpvoid pparam)
doelse }
}while(::findnextfile( hfile,pinfo));
::findclose(hfile);
delete pinfo;
m_mutexthreadcount.lock();
uthreadcount--;
if(uthreadcount==0)
m_event.setevent();
m_mutexthreadcount.unlock();
return 0;}
1 2
Linux下利用多執行緒實現矩陣相乘的平行計算
現代的執行緒庫允許不同的執行緒執行在不同的處理器晶元上,從而實現真正意義上的並行。換句話說,如果你的機子是單核的,用多執行緒也沒不會提高執行效率。我的電腦是多核的,平行計算耗時0.56秒,但按照常規的序列計算方法只需要0.07秒。並行程式 include include include includ...
PHP利用CURL MULTI實現多執行緒
php中的curl multi一類函式可以實現同時請求多個url,而不是乙個乙個依次請求,這就類似乙個程序實現了多個執行緒的功能,因此可以使用php利用curl multi實現完成多執行緒類的任務,下面就乙個利用php curl multi多執行緒採集網頁為例來說明一下。檢視 列印01 02 功能 ...
VC多執行緒的同步
1.利用事件物件同步 事件分為 人工重置的事件物件和自動重置的事件物件。人工重置的事件物件 收到通知,等待的所以執行緒變為可排程執行緒。自動重置的事件物件 收到通知,等待的所以執行緒只有乙個變為可排程。同時作業系統會將事件物件設定為無訊號狀態。為了實現執行緒間的同步,不應該使用人工重置的事件物件,而...