- 多线程:主线程在运行过程中,可以创建新的线程,这些线程可以共享进程的资源,如全局变量,句柄等;
- 线程函数定义:DWORD WINAPI ThreadProcess(LPVOID lpParam);
- `WINAPI 宏名,在windef.h有声明 #define WINAPI __stdcall;__stdcall为新标准C++/C函数调用方法,采用自动清栈;
- 凡是由系统调用的函数必须定义为__stdcall类型,需要显示说明,否则为_cdecl类型。
- 线程创建函数:
- HANDLE CreateThread(
- LPSECURITY_ATTRIBUTES lpThreadAttributes,
- DWORD dwStackSize,
- LPTHREAD_START_ROUTINE lpStartAddress,
- LPVOID lpParameter,
- DWORD dwCreationFlage,指定为零,线程创建后立即启动;为CREATE_SUSPENDED时,ResumeThread函数启动。
- DWORD* lpThreadId);
-
#include<windows.h>
#include<iostream> -
using namespace std;
DWORD WINAPI ThreadProcess(LPVOID lpParam)
{
int i = 0;
for (i; i < 100; i++)
cout << "测试" << i << endl;
return 0;
}
int main()
{
DWORD ThreadId;
HANDLE hThread= ::CreateThread
(
NULL,
NULL,
ThreadProcess,
NULL,
0,
&ThreadId
); -
Sleep(20);
cout << "结果id=" << ThreadId<< endl;::WaitForSingleObject(hThread, INFINITE);
::CloseHandle(hThread);
return 0;
} - 函数:WaitForSingleObject(hThread, INFINITE);
- 等待指定对象变为授信状态;
- INFINITE:指定函数等待的时间;