MSDN中CreateThread原型:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId);
参数:
lpThreadAttributes 用于设置线程内核对象的安全属性,一般设置NULL表示默认安全属性。
dwStackSize 设置新线程的堆栈空间大小。
lpStartAddress 指定新线程的函数地址。
lpParameter 传递给新线程的参数。
dwCreationFlags 表示创建新线程的方法,一般使用NULL。
lpThreadId 用来接受新线程的ID,如果设置为NULL,表示不返回线程ID。
例如:
1、不向新线程传递参数的使用。
DWORD WINAPI NewThread ( LPVOID lpParam )
{
return 0;
}
void test()
{
DWORD dwProcessId;
CreateThread ( NULL, 0, NewThread, NULL, 0, &dwProcessId ) ;
}
2、向新线程传递参数的使用方法。
typedef struct _CLIENT_INFO {
// ……
} CLIENT_INFO, *PCLIENT_INFO ;
DWORD WINAPI NewThread ( LPVOID lpParam )
{
// 取得客户信息结构
PCLIENT_INFO pClientInfo = (PCLIENT_INFO)lpParam ;
// 处理客户请求
return 0 ;
}
VOID Server ()
{
// 不断地接受客户端请求
while ( TRUE )
{
// 设置客户信息结构,省略对ClientInfo结构的填充
CLIENT_INFO ClientInfo ;
// 创建工作线程处理客户端请求
CreateThread ( NULL, 0, NewThread, &ClientInfo, 0, NULL ) ;
}
}
以上是本人学习《Windows编程循序渐进》这本书时做的一点小笔记,只为自己动手敲一边文字,加深印象,更为分享给需要的朋友。