windows编程时若需要使用多线程技术,则需要先创建线程,然后使用这些线程执行相对应的功能.在VC程序中使用多线程,则可以调用API函数CreateThread()函数创建线程.
CreateThread()原型如下:
HANDLE CreateThread()
{
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
};
该函数用于创建一个线程,并返回该线程的句柄,各参数含义如下:
lplpThreadAttributes是一个指向结构体SECURITY_ATTRIBUTES的指针,表示指定该线程的安全属性.该参数可以设置为NULL,表示创建线程时使用默认的安全属性.
dwStackSize指定线程初始化时地址空间的大小.如果指定为0时则表示创建的新线程的地址空间与调用该函数的线程地址空间一样.
lpStartAddress是指定该线程的线程函数地址.当线程创建成功后,新建线程将调用该函数执行对应功能.
lpParameter表示将要传递给新建线程的命令行参数.新建线程可以根据该参数的不同而执行不同的功能.
dwCreationFlags用于指定线程建立后是否立即运行.其值有以下两个:
CREATE_SUSPENDED线程创建成功后暂停运行
0 线程创建成功后立即运动
lpThreadId 表示新建线程的ID号,一般设置有NULL.
示例代码:
#include <windows.h>
#include <stdio.h>
DWORD WINAPI myfun(LPVOID lpParameter);
int main()
{
HANDLE h1;
h1 = CreateThread(NULL, 0, fun1, NULL, 0, NULL);
CloseHandle(h1);
system("pause");
return 0;
}
DWORD WINAPI myfun(LPVOID lpParameter)
{
printf("线程已经运行");
}