c++使用了未定义类型_c++如何新建

c++使用了未定义类型_c++如何新建一、定义HANDLECreateMutex(LPSECURITY_ATTRIBUTESlpMutexAttributes,//指向安全属性的指针BOOLbInitialOwner,//初始化互斥对象的所有者LPCTSTRlpName//指向互斥对象名的指针);第一个参数是一个指向SECURITY_ATTRIBUTES结构体的指针,一般的情况下,可以是nullptr。第二个参数类型为BOOL,表示互斥锁创建出来后是否被当前线程持有。第三个参数类型为字符串(con

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、定义

HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针
BOOL bInitialOwner, // 初始化互斥对象的所有者
LPCTSTR lpName // 指向互斥对象名的指针
);

第一个参数是一个指向SECURITY_ATTRIBUTES结构体的指针,一般的情况下,可以是nullptr。

第二个参数类型为BOOL,表示互斥锁创建出来后是否被当前线程持有。

第三个参数类型为字符串(const TCHAR*),是这个互斥锁的名字,如果是nullptr,则互斥锁是匿名的。

例: HANDLE hMutex = CreateMutex(nullptr, FALSE, nullptr);上面的代码创建了一个匿名的互斥锁,创建出来后,当前线程不持有这个互斥锁。

二、实例

 

#include <windows.h>

class CLock
{

public:
	CLock() :_mutex(NULL)
	{
		this->_mutex = CreateMutex(NULL, FALSE, TEXT("_temp_mutex_lock"));
	}

	virtual ~CLock()
	{
		if (this->_mutex)
		{
			CloseHandle(this->_mutex);
			this->_mutex = NULL;
		}
	}

	CLock(const CLock& mutex) { *this = mutex; }

	CLock& operator=(const CLock& other)
	{
		if (this != &other)
		{
			this->_mutex = other._mutex;
		}
		return *this;
	}
private:
	HANDLE _mutex;

public:
	void Lock()
	{
		WaitForSingleObject(this->_mutex, INFINITE);
	}


	void UnLock()
	{
		ReleaseMutex(this->_mutex);
	}

};

参考:

https://blog.csdn.net/enterlly/article/details/79158920

https://blog.csdn.net/xialianggang1314/article/details/78477451

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185885.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Ajax清晰请求步骤与代码

    Ajax清晰请求步骤与代码异步请求ajax的使用在前后台传递数据,优化用户体验起着至关重要的角色,那么下面给大家简单罗列了一下ajax请求的步骤与代码。一、原生JS中的Ajax:1、使用ajax发送数据的步骤第一步:创建异步对象varxhr=newXMLHttpRequest();第二步:设置请求行open(请求方式,请求url)://get请求如果有参数就需要在…

  • mtk驱动安装_UBOOT下U盘驱动移植

    mtk驱动安装_UBOOT下U盘驱动移植对于MTKCamera驱动移植一般分为四部分:1、硬件IO口配置;2、Camera驱动移植;3、上电时序;4、修改i2c控制器;硬件电路:1、GPIO配置打开 mediatek\dct\DrvGen.exe 选择mediatek\custom\xiaoxi\kernel\dct\dct\codegen.

    2022年10月26日
  • Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝!

    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝!SpringCloudGreenwich正式版在01/23/2019这天正式发布了,下面我们来看下有哪些更新内容。生命周期终止提醒SpringCloudEdgwareEdgware版本将于08/01/2019正式退役,具体可以参考官方宣布:https://spring.io/blog/2018/07/30/spring-cloud-edgware-eol-aug…

    2022年10月24日
  • 机器学习常见问题

    机器学习常见问题

    2021年11月19日
  • 查看mysql慢日志_docker查看实时日志的命令

    查看mysql慢日志_docker查看实时日志的命令慢查询日志是否开启showvariableslike’%slow_query_log%’;#如果结果中包含slow_query_log|OFF,则说明慢日志已经关闭#开启慢查询日志的方式:setglobalslow_query_log=1;慢查询sql的设置时间查看慢查询sql的设置时间,默认10s,sql执行时间大于该时间的才是慢sql,才会记录到慢查询…

    2022年10月12日
  • 简历项目

    简历项目

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号