使用CreateThread创建线程 提示2:线程A递增输出1-1000;线程B递减输出1000-1。为避免输出太快,每隔0.2秒输出一个数。 提示3:输出数据时,同时输出A或B标示是哪个线程输出的,并注意格式化输出信息。例如:
时间: 2024-11-03 07:12:55 浏览: 4
CreateThread3线程DEMO1.rar_createthread_线程 builder
在Windows编程中,可以使用`CreateThread`函数从头开始创建一个新的线程。下面是一个简单的例子,展示了如何使用`CreateThread`创建两个线程,线程A负责递增输出1到1000,线程B负责递减输出1000到1,每个线程会在每隔0.2秒输出一个数字,并附上相应的线程标识。
```cpp
#include <windows.h>
#include <iostream>
#include <mutex> // 用于同步输出
// 线程函数模板
template <typename Func>
DWORD WINAPI ThreadFunction(LPVOID lpParam)
{
std::string thread_id = (lpParam == THREAD_A) ? "A" : "B";
int value;
if (lpParam == THREAD_A)
{
value = 1;
for (int i = 1; i <= 1000; ++i)
{
std::unique_lock<std::mutex> lock(mutex);
std::cout << "[" << thread_id << "] " << value++ << ", ";
Sleep(200); // 每隔0.2秒
lock.unlock();
}
}
else // lpParam == THREAD_B
{
value = 1000;
for (int i = 1000; i >= 1; --i)
{
std::unique_lock<std::mutex> lock(mutex);
std::cout << "[" << thread_id << "] " << value-- << ", ";
Sleep(200);
lock.unlock();
}
}
return 0;
}
// 创建线程A
const DWORD THREAD_A = 1;
HANDLE thread_a = CreateThread(NULL, 0, &ThreadFunction<>, THREAD_A, 0, NULL);
// 创建线程B
const DWORD THREAD_B = 2;
HANDLE thread_b = CreateThread(NULL, 0, &ThreadFunction<>, THREAD_B, 0, NULL);
// 锁定互斥量并关闭所有线程
std::mutex mutex;
WaitForSingleObject(thread_a, INFINITE);
WaitForSingleObject(thread_b, INFINITE);
CloseHandle(thread_a);
CloseHandle(thread_b);
阅读全文