[Win32]互斥体

Posted websecyw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Win32]互斥体相关的知识,希望对你有一定的参考价值。

一、互斥体

内核级临界资源(跨进程),互斥体可以看成能够放进内核(0环)中的一种令牌。

技术图片

 

 

 

HANDLE CreateMutex(
  LPSECURITY_ATTRIBUTES lpMutexAttributes,  // SD //安全描述符
  BOOL bInitialOwner,                       // initial owner //创建出的互斥体有信号填写False
  LPCTSTR lpName                            // object name  //内核互斥体名字随意起
);

两个程序同时执行,只有当第一个程序执行完毕后才会执行,也就是说第一个进程没有释放令牌的时候另外一个进程是处于堵塞的状态

int main(int argc, char* argv[])
		
{
	//创建互斥体
	HANDLE g_hMutex = CreateMutex(NULL,FALSE,"XYZ"); //如果写true意味着当前的互斥体是属于当前这个进程的。
	//获取令牌:有信号,线程的拥有者
	WaitForSingleObject(g_hMutex,INFINITE);

	for(int i=0;i<10;i++)
	{
	
		Sleep(1000);
		printf("A进程的x线程:%d 
",i);
	}
	//释放令牌
	ReleaseMutex(g_hMutex);
	return 0;
}

技术图片

 

 

 

 

以上是关于[Win32]互斥体的主要内容,如果未能解决你的问题,请参考以下文章

零基础逆向工程36_Win32_10_互斥体_ForSingleObject_WaitForMultipleObjects

等到另一个进程锁定然后解锁 Win32 互斥锁

零基础逆向工程37_Win32_10_事件_线程同步

Linux互斥锁必须是全局的吗?

锁定多个线程

进程崩溃时未释放 Win32 命名互斥锁