C++ CreateThread创建线程
(2012-11-14 10:44:29)
标签:
ccreatethread_beginthread_beginthreadex_endthread_endthreadex |
分类: C/VC |
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes
DWORD dwStackSize, // initial thread stack size
LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
LPVOID lpParameter, // argument for new thread
DWORD dwCreationFlags, // creation flags
LPDWORD lpThreadId // pointer to receive thread ID
);
在类的文件中定义线程函数:
static DWORD WINAPI TestThreadProc(LPVOID lpParameter);
DWORD WINAPI TestThreadProc();
源文件中实现:
DWORD WINAPI CTestDlg::TestThreadProc( LPVOID lpParameter )
{
CTestDlg* pDataCollecDlg= (CTestDlg*)lpParameter;
return pDataCollecDlg->TestThreadProc();
}
DWORD WINAPI TestThreadProc();//执行线程工作内容
创建线程:
HANDLE hThread= CreateThread(NULL,0,TestThreadProc,this,0,NULL);
CWinThread* pThread =AfxBeginThread(ThreadTests,this,THREAD_PRIORITY_HIGHEST,0,0,NULL);//MFC函数创建,不需要关闭句柄(控制优先级等操作通过pThread操作)
NULL:安全属性继承进程
0:堆栈大小默认1M
线程函数:TestThreadProc
this:传递参数
0:创建即执行
NULL:thread ID
暂停线程:
SuspendThread(hThread);
激活/恢复线程:
ResumeThread(hThread);
设置线程优先级:
SetThreadPriority(hThread,THREAD_PRIORITY_HIGHEST);
用完时,关闭句柄:
CloseHandle(hThread);
也可以使用C运行时函数来创建、结束线程:
_beginthread, _beginthreadex
前一篇:VC++ ADO2数据类源文件