使用系统调用函数CreateThread()创建一个子线程,并在子线程序中显示:Thread is running!,使用函数sleep()使得线程挂起10s,之后使用函数ExitThread()撤销线程。并使多个线程并行
时间: 2024-09-25 22:03:04 浏览: 61
在Windows操作系统中,可以使用`CreateThread()`函数通过系统调用来创建一个新的子线程。以下是一个简单的示例,展示了如何创建、运行、暂停以及退出线程:
```c++
#include <windows.h>
#include <iostream>
// 子线程函数的原型
LRESULT WINAPI MyThreadProc(LPVOID lpParam);
int main()
{
// 线程属性
LPSECURITY_ATTRIBUTES threadAttributes = NULL;
DWORD stackSize = 0;
HANDLE hThread;
// 创建线程的参数
LPVOID param = (LPVOID)"Thread is running!";
DWORD threadID;
// 创建新线程
hThread = CreateThread(
threadAttributes,
stackSize,
MyThreadProc, // 进程线程函数
param, // 参数
0, // 标志(一般设置为0)
&threadID // 新线程ID接收指针
);
if (hThread == NULL)
{
std::cerr << "Failed to create thread." << std::endl;
return -1;
}
// 显示线程正在运行
std::cout << "Thread is running!" << std::endl;
// 让线程休眠10秒
Sleep(10000); // sleep函数实际上不是系统调用,而是标准库中的函数
// 撤销线程
TerminateThread(hThread, 0); // 或者ExitThread(0)等同于终止线程
CloseHandle(hThread); // 关闭线程句柄
return 0;
}
// 子线程函数实现
LRESULT WINAPI MyThreadProc(LPVOID lpParam)
{
char* message = static_cast<char*>(lpParam);
while (true) // 因为未指定退出条件,这里简单地无限循环
{
// 打印消息
std::cout << message << std::endl;
}
return 0;
}
```
在这个例子中,`MyThreadProc`函数会在新的线程中运行,不断打印出给定的消息。注意,为了演示,这里没有明确的线程结束条件,实际应用中需要添加适当的方式让线程停止。
阅读全文