Windows互斥锁的使用

互斥锁std::_Mutex的使用

  • 首先是来看一下没使用互斥锁的情况
// InterlockedIncrementUse.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "InterlockedIncrementUse.h"

using namespace std;

ULONG g_count = 0;

std::_Mutex g_mutex; //互斥锁

UseLock::UseLock()
{
	m_dwRef = 0;
}

UseLock::~UseLock()
{

}


void WINAPI make_lock()
{
	//g_mutex._Lock();
	//InterlockedIncrement(&g_count);
	int m = 10;
	for (int i = 0 ; i 

可以看出创建了两个多线程,结果如下:
Windows互斥锁的使用_第1张图片
可以看出 是无序的

  • 看一下使用加锁的情况
// InterlockedIncrementUse.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "InterlockedIncrementUse.h"

using namespace std;

ULONG g_count = 0;

std::_Mutex g_mutex; //互斥锁

UseLock::UseLock()
{
	m_dwRef = 0;
}

UseLock::~UseLock()
{

}


void WINAPI make_lock()
{
	g_mutex._Lock();
	//InterlockedIncrement(&g_count);
	int m = 10;
	for (int i = 0 ; i 

运行结果:
Windows互斥锁的使用_第2张图片

总结一下:使用_mutex方法

  • 声明mutex变量
std::_Mutex g_mutex; //互斥锁声明

加锁:

	g_mutex._Lock();

解锁:

	g_mutex._Unlock();

你可能感兴趣的:(C++)