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--多线程与互斥锁
微信号: Fengshadow1

编程免费资料

有你想要


以上是关于WINAPI--多线程与互斥锁的主要内容,如果未能解决你的问题,请参考以下文章

synchronized锁多线程同步的原理是咋样的?

《C++多线程编程》学习笔记

并发编程之多线程

ThreadX内核源码分析 - 线程同步之互斥锁及动态优先级

整数的无锁多线程

Python网络编程(进程通信信号线程锁多线程)