使用系统调用 CreateThread () 创建一个子线程,并在子线程中 显示:Thread is Running!。为了能让用户清楚地看到线程的运行情 况,使用Sleep () 使线程挂起5秒,之后使用 ExitThread 撤销 线程。具体操作过程,和代码都给我列出来
时间: 2024-10-28 10:06:29 浏览: 36
在Windows平台下,使用`CreateThread()`创建一个子线程并演示特定行为的过程包括以下步骤:
1. **线程函数声明**:
我们首先需要定义一个线程函数,比如`ThreadFunction`,在这个函数内部我们会展示消息,暂停线程,然后退出。
```c++
#include <iostream>
#include <windows.h>
#include <conio.h> // 包含kbhit()用于检测键盘输入
// 线程函数
DWORD WINAPI ThreadFunction(LPVOID lpParameter) {
char message[] = "Thread is Running!";
Sleep(5000); // 挂起5秒钟
std::cout << message << std::endl; // 显示消息
if (_kbhit()) { // 如果有键盘输入,假设我们想退出
ExitThread(0); // 通过ExitThread结束线程
} else {
ExitProcess(GetCurrentProcess()); // 如果无键盘输入,退出整个进程
}
return 0;
}
```
2. **创建线程**:
在主进程中,使用`CreateThread()`创建新线程,并传入线程函数的地址及参数。
```c++
int main() {
// 创建线程
HANDLE hThread = CreateThread(NULL, 0, ThreadFunction, NULL, 0, NULL);
// 检查线程创建是否成功
if (hThread == NULL) {
std::cerr << "Failed to create thread!" << std::endl;
return 1;
}
// 主线程继续执行,而子线程会异步运行
std::cout << "Main thread is running...\n";
// 等待子线程完成(如果没有显式等待)
WaitForSingleObject(hThread, INFINITE);
// 结束主线程
CloseHandle(hThread);
return 0;
}
```
在这个例子中,当子线程运行时,它会显示"Thread is Running!",然后挂起5秒。如果有键盘输入(这里模拟用户干预),子线程会通过`ExitThread()`结束;如果没有键盘输入,主线程将等待子线程结束后结束整个进程。
阅读全文