用Microsoft Visual C++自行定义线程函数的内容,并尝试实现多个函数并发执行
时间: 2024-09-28 13:06:02 浏览: 30
在Microsoft Visual C++中,要自定义线程函数并让它们并发执行,你可以使用Windows API中的`CreateThread`函数或者C++11及以上版本的标准库中的`std::thread`。以下是使用`CreateThread`的一个基本示例:
```cpp
#include <windows.h>
#include <iostream>
// 自定义线程函数模板
template <typename Func>
DWORD WINAPI ThreadFunction(LPVOID lpParam) {
Func func = static_cast<Func>(lpParam);
return func(); // 根据传入的函数指针调用实际函数
}
// 示例线程函数
void PrintHello() {
std::cout << "Hello from thread " << GetCurrentThreadId() << std::endl;
}
int main() {
// 创建一个新的线程,传入PrintHello函数的地址作为参数
DWORD threadId;
HANDLE hThread = CreateThread(NULL, 0, &ThreadFunction<PrintHello>, &PrintHello, 0, &threadId);
if (hThread != NULL) {
// 等待线程结束
WaitForSingleObject(hThread, INFINITE);
// 关闭线程句柄
CloseHandle(hThread);
std::cout << "Main thread finished" << std::endl;
} else {
std::cerr << "Failed to create thread!" << std::endl;
}
return 0;
}
```
在这个例子中,我们创建了一个名为`ThreadFunction`的通用线程函数模板,它接受一个指向函数的指针,然后在其内部调用这个函数。
在`main`函数里,我们使用`CreateThread`创建了一个新线程,传入的是`PrintHello`函数的地址。这使得新线程会执行`PrintHello`函数内容,即打印出一条消息。
阅读全文