windows线程 互斥锁CreateMutex、ReleaseMutex、CloseHandle

本文介绍了Windows系统中用于多线程同步的互斥锁,包括如何创建、等待、释放及关闭互斥锁。通过示例代码,解释了互斥锁的独占性和等候规则,同时提到了互斥锁与原子锁的差异和效率问题。
摘要由CSDN通过智能技术生成

互斥
相关问题
多线程下代码或资源的共享使用。
互斥的使用
1.创建互斥
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes,//安全属性(废弃参数,置NULL)
BOOL bInitialOwner,//初始的拥有者TRUE/FALSE
LPCTSTR lpName //命名
);//创建成功返回互斥句柄
可等候的句柄,具备有信号和无信号的特点
bInitialOwner
TRUE-那个线程创建就那个线程具有互斥
FALSE-任何线程都不拥有它
特性:
a.独占性-在某个时间点上,只有一个线程拥有互斥,别的线程等待,除非这个线程扔掉后,别的线程才会拥有互斥
b.所有线程都没有互斥时,线程句柄有信号,如果有一个线程拥有互斥,线程句柄无信号
2.等候互斥
WaitFor… 互斥的等候遵循谁先等候谁先获取。
谁先等候,谁先获得互斥
3.释放互斥
BOOL ReleaseMutex(
HANDLE hMutex //互斥句柄
);
4.关闭互斥句柄
CloseHandle

错误示例代码(混乱)

#include <Windows.h>
#include <stdio.h>

DWORD CALLBACK myThreadProc1(LPVOID lpParam)
{
   
	char* szText = (char*)lpParam;
	while(1)
	{
   
		//printf("%s\n",szText);
		for(int i = 0; i < strlen(szText);i++)
		{
   
			printf("%c",szText[i]);
			Sleep(150);
		}
		printf("\n");
	}
}
DWORD CALLBACK myThreadProc2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值