1.知识点(CreateThread)
1.1原型
HANDLE WINAPI CreateThread(
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ SIZE_T dwStackSize,
_In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ LPVOID lpParameter,
_In_ DWORD dwCreationFlags,
_Out_opt_ LPDWORD lpThreadId
);
1.2 参数说明
| 序号 | 参数 | 说明 |
| 1 | lpThreadAttributes | 表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。 |
| 2 | dwStackSize | 表示线程栈空间大小。传入0表示使用默认大小(1MB)。 |
| 3 | lpStartAddress | 表示新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。 |
| 4 | lpParameter | 是传给线程函数的参数。 |
| 5 | dwCreationFlags | 指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。 |
| 6 | lpThreadId | 将返回线程的ID号,传入 |
2. 概要
DWORD WINAPI ThreadFunc(LPVOID);
hThread = CreateThread(NULL, 0, ThreadFunc, 0, 0, &threadId); // 创建线程
3. 代码
#include <iostream>
#include<Windows.h>
using namespace std;
DWORD WINAPI ThreadFunc(LPVOID);
void main() {
cout << "线程实验test\n";
HANDLE hThread;
DWORD threadId;
hThread = CreateThread(NULL, 0, ThreadFunc, 0, 0, &threadId); // 创建线程
printf("我是主线程, pid = %d\n", GetCurrentThreadId()); //输出主线程pid
Sleep(2000);
getchar();
}
DWORD WINAPI ThreadFunc(LPVOID p)
{
printf("我是子线程, pid = %d\n", GetCurrentThreadId()); //输出子线程pid
return 0;
}
4 运行结果

2836

被折叠的 条评论
为什么被折叠?



