Windows多线程编程之使用Windows API CreateThread创建一个线程
2024-08-18
28
Windows API CreateThread是一个在Windows API中提供了建立新的线程的函数,该函数在主线程的基础上创建一个新线程,线程终止运行后,线程对象仍然在系统中,需要通过CloseHandle函数来关闭该线程对象。
函数介绍
函数原型:
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
);
参数说明:
第一个参数 lpThreadAttributes 表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。
第二个参数 dwStackSize 表示线程栈空间大小。传入0表示使用默认大小(1MB)。
第三个参数 lpStartAddress 表示新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。
第四个参数 lpParameter 是传给线程函数的参数。
第五个参数 dwCreationFlags 指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。
第六个参数 lpThreadId 将返回线程的ID号,传入NULL表示不需要返回该线程ID号。
返回值
线程创建成功返回新线程的句柄,失败返回NULL
实例
使用CreateThread的多线程实例如下。
创建第一个线程。主进程结束,则撤销线程。
#includeWindows.h
#includestdio.h
DWORD WINAPI ThreadFunc(LPVOID);
void main()
{
HANDLE hThread;
DWORD threadId;
hThread = CreateThread(NULL, 0, ThreadFunc, 0, 0, threadId); // 创建线程
printf(我是主线程, pid = %d\n, GetCurrentThreadId()); //输出主线程pid
Sleep(2000);
}
DWORD WINAPI ThreadFunc(LPVOID p)
{
printf(我是子线程, pid = %d\n, GetCurrentThreadId()); //输出子线程pid
return 0;
}
这个程序功能很简单,主线程创建一个线程,同时主线程和子线程分别向控制台输出线程的PID,如下图:
赞一波!3
相关文章
- 接口文档 API 调试、管理工具
- .Net多线程下载断点续传开源库Downloader用法
- 如何在 Python 中使用 Matplotlib 创建一个空的 Figure?
- 如何在 Pandas 中创建一个空的数据帧并向其附加行和列?
- 在C#中通过Windows API读写INI文件的简单实现代码
- 如何将ReactJS与Flask API连接起来?
- 如何在 Django 中使用 MVT 创建一个基本项目?
- Python - 使用 Tinyurl API 的 URL 缩短器
- API架构REST和GraphQL怎么选?
- Python 中的条件对象——线程同步
- Thread类及其对象——Python 多线程
- 计时器对象——Python 多线程
- 如何在Java中创建一个简单的HTTP服务器
- C#控制台程序如何创建HTTP Rest API
- C# RESTful Owin 自托管的Web API使用FORM实现身份验证
- 解决Python多线程并发安全性问题
- Linux内核编程中通过kthread_create创建内核线程
- 解决C#中的线程同步问题
- 打造精致高效:如何规范编写API的指南
- 探索Java 8中的Stream API及其高级用法
文章评论
全部评论