thread 创建线程与 WINAPI 创建线程
时间: 2024-09-28 18:12:04 浏览: 34
在 Windows 操作系统上,除了使用 C++ 标准库 `<thread>` 来创建线程(也被称为 Posix 风格),还可以使用 WinAPI 提供的 API,如 `_beginthreadex` 或 `_beginthread` 来创建线程。WinAPI 线程创建通常涉及到更底层的编程,例如手动管理线程数据结构和回调函数。
**使用 _beginthreadex 示例**:
```cpp
#include <Windows.h>
#include <iostream>
DWORD WINAPI MyThreadFunction(LPVOID lpParam) {
std::cout << "WinAPI Thread function is running.\n";
// 在这里编写线程的执行逻辑
return 0; // 返回值仅用于调试,实际应用中可以忽略
}
int main() {
LPVOID param = nullptr; // 参数传递给线程函数
DWORD threadId;
// 使用 WinAPI 创建线程,传递线程函数地址和参数
if (CreateThread(nullptr, 0, MyThreadFunction, ¶m, 0, &threadId)) {
std::cout << "Thread created with ID: " << threadId << "\n";
// 等待线程结束(如果需要)
WaitForSingleObject(GetCurrentThread(), INFINITE);
} else {
std::cerr << "Failed to create thread." << std::endl;
}
return 0;
}
```
在这个 WinAPI 的例子中,`MyThreadFunction` 是线程的实际执行体,`lpParam` 是传递给它的参数,`WaitForSingleObject` 可以用来让主线程暂停直到子线程结束。
阅读全文