#include "stdafx.h"
#include<windows.h>
#include<stdio.h>
#define MAX_THREADS 1
typedef struct _THREAD_PARAM
{
DWORD i;
DWORD dwRandom;
DWORD dwData;
}THREAD_PARAM,*LPTHREAD_PARAM;
//线程函数 的参数是任意类型 这里自定义结构体
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
LPTHREAD_PARAM pData;
//参数数据类型
pData = (LPTHREAD_PARAM)lpParam;
//显示参数
printf("TID=%u,\t Parameters=%u,%u,%u\n",
GetCurrentThreadId(),
pData->dwData,
pData->dwRandom,
pData->i
);
//释放保存参数的内存 主线程中分配的参数
HeapFree(GetProcessHeap(),0,pData);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
LPTHREAD_PARAM pData;
DWORD dwThreadId[MAX_THREADS];
HANDLE hThread[MAX_THREADS];
int i ;
//创建的线程个数
for (i=0;i<MAX_THREADS;i++)
{
//为线程分配内存
pData = (LPTHREAD_PARAM)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,
sizeof(THREAD_PARAM));
if (pData==NULL)
{
printf("HeapAlloc error;\n");
ExitProcess(2);
}
//设置参数
pData->i=i;
pData->dwRandom=rand();
pData->dwData=100;
//创建线程
hThread[i]=CreateThread(
NULL,
0,
ThreadProc,
pData,//传给线程的参数可以为NULL
0,
&dwThreadId[i]
);
if (hThread[i]==NULL)
{
ExitProcess(i);
}
}
//等待所有线程执行完毕
WaitForMultipleObjects(MAX_THREADS,hThread,TRUE,INFINITE);
for (i=0;i<MAX_THREADS;i++)
{
CloseHandle(hThread[i]);
}
system("pause");
return 0;
}
WINDOWS API学习笔记之创建线程
最新推荐文章于 2024-08-06 21:36:54 发布