c语言windows多线程编程实例,WINAPI--多线程与互斥锁

//WINAPI--多线程与互斥锁(销票系统)

#include

#include

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张票!\n", 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张票!\n", tickets--);

}

else

break;//没有票了,就关闭该窗口

ReleaseMutex(hMutex);//释放互斥锁

}

return 0;

}

e8627d0b9b613e8533b1cbd30df6f18c.png

微信号:

Fengshadow1

编程免费资料

有你想要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值