如何讓程式自動管理執行緒

2021-09-08 20:53:39 字數 2706 閱讀 3008

private:

handle m_handle;

};   

顯然,我們僅有這乙個類還不能完成我們所需的工作,我們還要乙個負責具體監控的threadtask類,threadtask類中有乙個監控執行緒threadtaskfunc( )負責監控並刪除執行緒。該類定義如下:

class cthreadtask : public cobject

;implement_dynamic( cthreadcaretaker, cobject )

其中isvalid()是用於檢驗threadtaskfunc()是否已動行了,其它意思都很明顯。

流程圖總的流程圖如下:

具體實現

下面給出它的具體實現。

threadtask::threadtask()

void threadtask::addhandle( const handle chandle )

void threadtask::closethreadhandles()}}

} threadtask::~threadtask()

bool threadtask::isvalid()

下面介紹執行緒threadtaskpro();

該執行緒最主要的目的就是呼叫threadtask的closethreadhandles()函式,實現如下:

dword winapi threadtaskpro( lpvoid pparam  )

setthreadpriority( hcurrentthread, thread_priority_normal );

return( 0 );

}threadtask類到這就介紹完了,下面我們看看threadmanager類的實現,其實它的工作已很小,就是啟動要管理的執行緒(在建構函式中完成),並控制threadtask類。

具體實現:

threadmanager::threadmanager(threadpro threadpro,  lpvoid pparam)

}threadmanager::~threadmanager()

bool  threadmanager::runthread()

整在機制就介紹完了。

使用方法

使用方法相當簡單,比如說,我要執行程序mythread1,並傳入引數m_pro,只要用以下**就可以了:

threadmanager threadmanager( &mythread1, (lpvoid)m_pro );

threadmanager.runthread();

就可以了,用這種方法創的執行緒,會自動由threadmanager類管理,並在完成的工作時,自動釋放執行緒資源。

趙明email:  [email protected];[email protected]

web: 

private:

handle m_handle;

};   

顯然,我們僅有這乙個類還不能完成我們所需的工作,我們還要乙個負責具體監控的threadtask類,threadtask類中有乙個監控執行緒threadtaskfunc( )負責監控並刪除執行緒。該類定義如下:

class cthreadtask : public cobject

;implement_dynamic( cthreadcaretaker, cobject )

其中isvalid()是用於檢驗threadtaskfunc()是否已動行了,其它意思都很明顯。

流程圖總的流程圖如下:

具體實現

下面給出它的具體實現。

threadtask::threadtask()

void threadtask::addhandle( const handle chandle )

void threadtask::closethreadhandles()}}

} threadtask::~threadtask()

bool threadtask::isvalid()

下面介紹執行緒threadtaskpro();

該執行緒最主要的目的就是呼叫threadtask的closethreadhandles()函式,實現如下:

dword winapi threadtaskpro( lpvoid pparam  )

setthreadpriority( hcurrentthread, thread_priority_normal );

return( 0 );

}threadtask類到這就介紹完了,下面我們看看threadmanager類的實現,其實它的工作已很小,就是啟動要管理的執行緒(在建構函式中完成),並控制threadtask類。

具體實現:

threadmanager::threadmanager(threadpro threadpro,  lpvoid pparam)

}threadmanager::~threadmanager()

bool  threadmanager::runthread()

整在機制就介紹完了。

使用方法

使用方法相當簡單,比如說,我要執行程序mythread1,並傳入引數m_pro,只要用以下**就可以了:

threadmanager threadmanager( &mythread1, (lpvoid)m_pro );

threadmanager.runthread();

就可以了,用這種方法創的執行緒,會自動由threadmanager類管理,並在完成的工作時,自動釋放執行緒資源。

如何讓程式隨開機自動啟動

if 需要開機啟動 得到程式自身的全路徑 dword dwret getmodulefilename null,pfilename,max path 新增乙個子key,並設定值 下面的 test 是應用程式名字 不加字尾.exe lret regsetvalueex hkey,test 0,reg ...

Linux中如何讓程式開機自動執行

linux中如何讓程式開機自動執行 2006 07 28 13 30 15 author songzi 我們知道在 windows 中,只需要將程式的快捷方式拖到啟動項裡,這樣程式就能在開機時自動執行了,實際上如果你用 gnome 的話,也有這樣的功能,在桌面 會話 啟動程式裡添你要執行的程式指令就...

讓程式自動使用管理員身份執行

vista windows 7 都使用了uac來控制程式訪問,對於一些需要使用管理員身份執行的程式就得右鍵以管理員身份執行。c 程式設計中可以使程式自動使用管理員身份執行,也就是我們常常看到一些程式的圖示上會冒出個盾牌。方法 將其中level asinvoker 改成 level requiread...