(1) 使用系统调用函数CreateThread()创建一个子线程,并在子线程序中显示:Thread is running!,使用函数sleep()使得线程挂起10s,之后使用函数ExitThread()撤销线程。 (2) 用DEV自主实现同样的功能。
时间: 2024-09-28 13:05:51 浏览: 95
(1)在Windows平台上,你可以使用`CreateThread`函数从头开始创建一个子线程。首先,你需要包含`windows.h`头文件,然后编写一个简单的示例:
```c++
#include <windows.h>
#include <iostream>
// 子线程函数
DWORD WINAPI ThreadFunction(LPVOID lpParam) {
std::cout << "Thread is running!\n";
Sleep(10 * 1000); // 线程休眠10秒
ExitThread(0); // 退出线程并返回0
return 0; // 这行不会执行,因为线程已经结束
}
int main() {
DWORD threadId;
HANDLE hThread = CreateThread(NULL, 0, ThreadFunction, NULL, 0, &threadId);
if (hThread != INVALID_HANDLE_VALUE) {
printf("Thread created with ID: %d\n", threadId);
WaitForSingleObject(hThread, INFINITE); // 主线程等待子线程完成
CloseHandle(hThread); // 关闭线程句柄
printf("Thread finished.\n");
} else {
printf("Failed to create thread.\n");
}
return 0;
}
```
在这个例子中,`ThreadFunction`是线程运行的主要代码,`Sleep`函数让线程暂停,`ExitThread`用于终止线程。
(2)如果你想要用Dev-C++等IDE自主实现类似的功能,首先要确保已安装支持多线程的库,如C++11标准的线程库 `<thread>`。这里是一个基于C++11的例子:
```cpp
#include <iostream>
#include <thread>
#include <chrono> // 包含时间间隔操作
void thread_function() {
std::cout << "Thread is running!\n";
std::this_thread::sleep_for(std::chrono::seconds(10)); // 挂起10秒
std::cout << "Thread exiting...\n";
}
int main() {
std::thread my_thread(thread_function);
my_thread.join(); // 等待子线程完成
return 0;
}
```
这个示例使用了C++11的标准线程库,创建线程、睡眠和退出都更简单直观。注意,在Dev-C++中启用C++11支持可能需要设置项目的编译选项。
阅读全文