CreateThread()函数每个参数都是什么意思,线程问题帮我都解释一下好么!

2024-12-13 21:13:49
推荐回答(2个)
回答1:

HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpsa,
DWORD cbStack,
LPTHREAD_START_ROUTINE lpStartAddr,
LPVOID lpvThreadParam,
DWORD fdwCreate,
LPDWORD lpIDThread
);
lpsa:线程句柄的安全属性,比如子进程是否可以继承这个线程句柄,一般情况设置为NULL
cbStack:线程栈大小,一般取0表示默认大小
lpStartAddr:线程入口函数 typedef DWORD (__stdcall *LPTHREAD_START_ROUTINE) (
void* lpThreadParameter );在win32程序中默认的调用函数约定就是WINAPI ,__stdcall = WINAPI 。因此你可以声明你的入口函数为:
DWORD WINAPI ThreadProc( void* lpParamete) {//线程中你要做的事情}
lpvThreadParam:就是线程入口函数的参数,就是ThreadProc( void* lpParamete) 的参数
fdwCreate:控制线程创建的标志一般为0,表示线程立即启动。如果你想创建之后把线程挂起来可以传入CREATE_SUSPENDED ,传入这个参数你需要再适当的地方调用ResumeThread 启动线程
lpIDThread:是线程ID返回值,这个用来接收线程返回的ID
写了这么多我还是怕你不懂:
我举个例子吧,我不保证能运行成功,我也没去编译
DWORD WINAPI ThreadProc( void* lpParameter)
{
int *x = (int*)lpParameter;//获得参数的地址
MessageBox(NULL,TEXT("adf"),NULL,MB_OK);
}
DWORD dwThreadID;
int x = 0;
HANDLE hThread = CreateThread(0,0,ThreadProc,(void*)&x,0,&dwThreadID);
CloseHandle(hThread);
想学习好windows编程MSDN是必须了解的,你居然不知道什么是MSDN,MSDN就是帮助文档,你可以到百度搜一下并把它下载过来,这对你MFC、Windows API、C/C++等很有帮助的

回答2:

msdn上有专业的解释