创建线程的参数问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 12:35:39
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
);

最后一个参数,msdn的说明
lpThreadId
Pointer to a 32-bit variable that receives the thread identifier.
指向一个接收线程标识符的32位变量
这个接收回来的变量是用来干嘛用的?
有什么函数需要这个值作为参数么?
另外
我的线程函数

DWORD WINAPI WorkThread(pst_Work pWork)
{
Sleep(1000);
return 0;
}

函数返回以后,线程堆栈释放掉了么?
zoumorn
很感谢你的回答。
第二个关于堆栈的问题我想应该没什么问题了。因为我记得看msdn里面也是这么说的。但是忘记什么地方看到的了。在此证实一下。
但是第一个问题,还是没有明白。怎么通过id得到handle?
还有
BOOL TerminateThread(

lpThreadId 用来接收你创建的这个线程的 id。线程是一个内核对象,所有对该对象的操作都需要id或者handle,handle可以通过id open 得来。例如:TerminateThread(id?)

函数返回,线程堆栈不一定释放。需要等到所有指向该对象的handle释放

使用 open 函数:

HANDLE OpenThread(
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwThreadId
);

LPDWORD lpThreadId // pointer to receive thread ID
线程同步时会用到