#include <Windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI Fun1(LPVOID lpParameter);
DWORD WINAPI Fun2(LPVOID lpParameter);
int index = 0;
int tickets = 100; //全局变量tickets用来表示销售的剩余票数
int main()
{
HANDLE hThread1;
HANDLE hThread2;
//创建线程
hThread1 = CreateThread(NULL, 0, Fun1, NULL, 0, NULL);
//4个参数的意思分别为:使线程使用默认的安全性、让新线程采用与调用线程一样的栈大小、指定线程的入口函数地址、
//线程创建标记,0表示让线程一旦创立就运行、新线程的ID,不需要的话为null
hThread2 = CreateThread(NULL, 0, Fun2, NULL, 0, NULL);
CloseHandle(hThread1); //调用CloseHandle将此线程的句柄关闭,关闭句柄时,系统会递减该线程内核对象的使用计数。
CloseHandle(hThread2);
Sleep(4000); //让线程暂停运行4s
system("pause");
return 0;
}
//线程1入口函数
DWORD WINAPI Fun1(LPVOID lpParameter)
{
while (TRUE)
{
if (tickets > 0)
{
Sleep(1);
cout << "thread1 sell ticket : " << tickets-- << endl;
}
else
{
break;
}
}
return 0;
}
//线程2的入口函数
DWORD WINAPI Fun2(LPVOID lpParameter)
{
while (TRUE)
{
if (tickets > 0)
{
Sleep(1);
cout << "thread2 sell ticket : " << tickets-- << endl;
}
else
{
break;
}
}
return 0;
}
多线程例子
最新推荐文章于 2024-05-16 10:27:04 发布