WINAPI--多线程与互斥锁
Posted C语言编程实例
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WINAPI--多线程与互斥锁相关的知识,希望对你有一定的参考价值。
//WINAPI--多线程与互斥锁(销票系统)
#include <stdio.h>
#include <windows.h>
int tickets = 20; //20张车票
HANDLE hMutex = NULL;//互斥锁
//分两个窗口进行售票,一个是普通窗口,一个是VIP窗口
//VIP窗口
DWORD WINAPI VIPWin(LPVOID lpParam)
{
while(1)
{
WaitForSingleObject(hMutex, INFINITE);//等候获取互斥锁
if(tickets > 0) //只要票数大于零
{
Sleep(500); //临时外出
printf("VIP窗口售出第%d张票! ", tickets--);
}
else
break; //没有票了,就关闭该窗口
// Sleep(200); //VIP窗口每200毫秒可以售出一张票
ReleaseMutex(hMutex); //释放互斥锁
}
}
int main( void )
{
//为了让两个窗口实现同时卖票,所以要使用多线程技术
HANDLE hThread = NULL;
//创建互斥锁
// 初始时没有所有者
hMutex = CreateMutex(NULL, FALSE, NULL);
//参数:1.默认安全属性 2.默认栈大小 3.线程处理函数 4.处理函数的参数 5.立即执行 6.匿名线程
hThread = CreateThread(NULL, 0, VIPWin, NULL, 0, NULL);
//普通窗口
while(1)
{
WaitForSingleObject(hMutex, INFINITE);//等候获取互斥锁
if(tickets > 0) //只要票数大于零
{
Sleep(500); //普通窗口每500毫秒可以售出一张票
printf("普通窗口售出第%d张票! ", tickets--);
}
else
break; //没有票了,就关闭该窗口
ReleaseMutex(hMutex); //释放互斥锁
}
return 0;
}
编程免费资料
有你想要
以上是关于WINAPI--多线程与互斥锁的主要内容,如果未能解决你的问题,请参考以下文章