Win32线程同步 - 信号量

本文详细介绍了如何在Win32环境下利用信号量进行线程同步,强调了信号量允许多个线程同时访问同一资源的特点。当信号量创建时,可被锁定的最大次数为n,且信号量不涉及资源的拥有权。使用中,多个线程可同时持有信号量,而当信号量值降为0时,表明资源耗尽,后续线程必须等待。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

*        说明:使用信号量进行线程同步

*        特点:允许多个线程在同一时刻访问同一资源

*        解释:Win32中的Semaphore可以被锁住最多n次,其中n是Semaphore被产生时指定的

*        使用:1.多个线程可以同时锁定一个semaphore,不存在拥有权概念

*                  2.一旦Semaphore现值降到0,表示资源耗尽,此时任何线程调用必须wait...

*/

 


	#include <windows.h>
	#include <stdio.h>
	#include <stdlib.h>
	
	HANDLE g_hSemp = NULL;
	DWORD WINAPI ThreadProc1(LPVOID pVoid);
	DWORD WINAPI ThreadProc2(LPVOID pVoid);
	
	int main()
	{
		// 创建信号量
		g_hSemp = CreateSemaphore(NULL, 1, 10, NULL);
		DWORD nThreadID = 0;
		HANDLE hThread[2] = { 0 };
	
		// 创建工作线程
		hThread[0] = CreateThread(NULL, 0, ThreadProc1, NULL,
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值