临界区(锁)windows/linux通用

2023-10-30

//---------------------------------------------------------------------------

//                                      lock.h

//---------------------------------------------------------------------------

#pragma once


#ifdef WIN32

    #include <Windows.h>

    #include <process.h>


    class CLock

    {

    public:

        CLock()        { InitializeCriticalSection(&m_CriticalSection);           }

        ~CLock()       { DeleteCriticalSection(&m_CriticalSection);               }

        int Lock()     { EnterCriticalSection(&m_CriticalSection); return true;   }

        int Unlock()   { LeaveCriticalSection(&m_CriticalSection); return true;   }


    private:

        CRITICAL_SECTION m_CriticalSection;

    };


#else   // POSIX - linux


    #include <pthread.h>


    class CLock

    {

    public:

        CLock()        { pthread_mutex_init(&m_Mutex, NULL);                                       }

        ~CLock()       { pthread_mutex_destroy(&m_Mutex);                                          }

        int Lock()     { int nRetCode = pthread_mutex_lock(&m_Mutex);      return (nRetCode == 0); }

        int Unlock()   { int nRetCode = pthread_mutex_unlock(&m_Mutex);    return (nRetCode == 0); }


    private:

        pthread_mutex_t m_Mutex;

    };


#endif


//---------------------------------------------------------------------------

//                                      test.cpp

//---------------------------------------------------------------------------


int main(int argc, char** argv)

{

    CLock lock;


    lock.Lock();

    lock.Unlock();

    return 0;

}

 

 

转载自 http://zhidao.baidu.com/question/462443960.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

临界区(锁)windows/linux通用 的相关文章

  • Java多线程文件下载器高文件下载速度

    使用多线程下载器提高文件下载速度 在进行大文件下载时 使用多线程技术可以显著提高下载速度 本文将介绍如何使用多线程下载器来实现并行下载 以加快文件下载过程 多线程下载器简介 多线程下载器是一种利用多线程同时下载文件的工具 它将大文件分割成多
  • SSD(pytorch)自建数据集训练及测试

    一 数据集准备 SSD代码 GitHub amdegroot ssd pytorch A PyTorch Implementation of Single Shot MultiBox Detector 采用的VOC格式的数据集 在data文
  • odoo16安装教程,全球第一开源ERP平台

    虚拟机版本 ubuntu 22 10 本人用的是这个版本的ubuntu系统 也可以使用最新版本的 准备工作 打开虚拟机 ubuntu系统 进入终端 更新系统 sudo apt get update sudo apt get upgrade
  • js 获取两个时间之间相差月份

    话不多说 直接上代码 获取两个时间月份差 function getMonths start end var result var starts start split var ends end split var staYear start
  • Unity UGUI 添加 Material(材质)

    在给 UGUI 添加 Material 时 如果 Material 中的 Shader 不做特殊处理的话 那么此组件将会变成纯黑色 如果需要添加 Material 则需要在 Shader 中做 UGUI 专门的处理 Properties U
  • Android 11以下DialogFragment里弹出PopWindow显示问题

    最近在写UI的时候发现一个非常有意思的事情 Android 11以下在DialogFragment里面弹出PopWindow 最终会被截取 尝试过一些方法以后将解决方案做一个记录 mPopWindow setClippingEnabled
  • 华为手机连电脑当摄像头用_今天才知道,华为手机摄像头还能这样用!还不会用你买什么华为?...

    大家都知道 华为手机的摄像头十分给力 拍照效果很好看 但是你知道吗 华为手机摄像头 不仅仅能拍照 它还有很多隐藏的高级用法 比如今天说的这两个 不到10 的花粉会用 挺可惜的 一 华为手机摄像头高级用法 1 扫描文档 10分钟后就下班了 领
  • Python Tkinter Menu使用教程

    Menu类控件用来实现顶层 下拉 弹出菜单 Patterns Toplevel menus被用来显示在标题栏 root窗口或者其他顶层窗口上 创建一个顶层菜单 创建Menu类的实例 然后使用add方法添加命令或者其他菜单内容 root Tk
  • 30分钟掌握STL系列(二)

    30分钟掌握STL系列 二 迭代器 迭代器提供对一个容器中的对象的访问方法 并且定义了容器中对象的范围 迭代器就如同一个指针 事实上 C 的指针也是一种迭代器 但是 迭代器不仅仅是指针 因此你不能认为他们一定具有地址值 例如 一个数组索引
  • 滴滴前端高频react面试题总结

    当调用 setState的时候 发生了什么操作 当调用 setState时 React做的第一件事是将传递给setState的对象合并到组件的当前状态 这将启动一个称为和解 reconciliation 的过程 和解的最终目标是 根据这个新
  • iOS开发——在 OC 项目中使用基于 Swift 的 CocoaPods 库

    在 OC 项目中使用基于 Swift 的 CocoaPods 库 随着 Swift 的流行 各种神奇的库也开始有对应的 Swift 版本了 而其中一些更神奇的库却只有 Swift 版本 正巧接手了一个前人用 Swift 写的项目 里面有一个
  • element中checkbox触发change事件时同时传递状态和自定义参数

    element中checkbox触发change事件时同时传递状态和自定义参数 div div
  • 高质量程序设计指南C++ C 代码规范

    这里只是搬运作者对 匈牙利 命名规则做合理简化之后的命名规则 比较适合于 Windows应用程序的开发 建议1 类型名和函数名均以大写字母开头的单词组合而成 例如 class Node 类名 class LeafNode 类名 void D
  • 打开dll文件时模块加载失败,请确保二进制存储在指定的路径中,或者调试它以检查该二进制或相关的.DLL文件是否有问题

    打开dll文件时模块加载失败 请确保二进制存储在指定的路径中 或者调试它以检查该二进制或相关的 DLL文件是否有问题 打开dll文件时模块加载失败 电脑提示请确保二进制存储在指定的路径中 或者调试它以检查该二进制或相关的 DLL文件是否有问
  • Linux命令-fsync

    对fsync命令只做简单介绍 不做详细原理解释 通过man命令查看fsync 2 函数有以下共识 1 fsync函数是属于系统核心函数 2 调用fsync函数会将修改的数据和文件描述符的属性持久化到存储设备中 3 fsync函数将内核缓存的
  • PyQt+moviepy音视频剪辑实战文章目录

    前往老猿Python博文目录 本专栏为moviepy音视频剪辑合成相关内容介绍的免费专栏 对应的收费专栏为 moviepy音视频开发专栏 一 moviepy基础能力系统介绍 本部分主要以类为单位介绍moviepy相关知识 相关内容主要来自m
  • Linux——gcc和g++的区别和应用

    Windows中我们常用vs来编译编写好的C和C 代码 vs把编辑器 编译器和调试器等工具都集成在这一款工具中 在Linux下我们能用什么工具来编译所编写好的代码呢 其实Linux下这样的工具有很多 但我们只介绍两款常用的工具 它们分别是g
  • C#难点语法讲解之委托---从应用需求开始讲解

    一 委托的定义 委托 Delegate 是存有对某个方法的引用的一种引用类型变量 引用可在运行时被改变 简单解释 变量好控制 方法不好控制 委托可以把方法变成变量 二 例子解释定义 如果我们有一个数组 里面有10个数据 数组就是变量的一种
  • 逻辑架构图、系统架构图、技术架构图

    逻辑架构图 系统架构图和技术架构图是软件系统中常见的三种不同类型的架构图 用于描述系统的不同方面和层次 1 逻辑架构图 Logical Architecture Diagram 逻辑架构图侧重于系统的功能和模块之间的关系 描述了软件系统的逻
  • 前后端分离 单点登录SSO 纯前端实现单点登录SSO

    示例代码地址 GitHub 以前涉及到单点登录 都是用CAS解决的 不过体验不是很好 但是也确确实实实现了单点登录 利用了session会话 后来我到了公司的架构部 部门决定重新定位前端技术路线 我大胆地采用了前后端分离的方式 让前端工程化

随机推荐

  • 关于dataframe中的警告A value is trying to be set on a copy of a slice from a DataFrame问题解决

    在pandas处理dataframe时新增一列数据时发现这里给出警告 但不影响程序的正常运行 这个警告意思是pandas在使用de 列名 赋值时会返回一个试图而不是原始的dataframe 这种情况下对视图进行修改可能无法生效 针对这个问题
  • window10下半自动标注

    前言 我看了一眼我们项目的标签很多不行 得重新标注 想借助一下自动标注或者半自动标注救救一万多近两万张照片 方法1 easyDL智能标注 1 借助百度easyDL进行标注 选择EasyDL图像 gt 物体检测 我是做图像识别所以选择Easy
  • springboot JPA Connection is read-only. Queries leading to data modification are not allowed

    环境 springboot jpa 数据库 阿里云mysql数据库 数据库连接字符串 问题描述 在自己部署的mysql数据库可以正常访问 没有问题 但是切换到阿里mysql数据库上出现JPA Connection is read only
  • RenRen-Fast-Vue 安装

    node版本 npm版本 v10 24 1 6 14 12 下载代码 https gitee com renrenio renren fast vue git 设置代理 npm config set registry http regist
  • 在clion打断点,debug的时候没有按照顺序进行的情况怎么办?该文章可以提供几个思路

    在使用CLion进行调试时 如果断点无法按照预设的位置停止 通常是由于以下原因之一导致的 编译器优化 编译器可能对代码进行了优化 使得某些代码没有实际执行 因此断点无法触发 可以尝试关闭编译器优化选项 如 O2 重新编译代码并运行调试 代码
  • Unity 代码命名规范

    1 类 class 结构 struct 枚举 enum 标签 Attribute 名 静态 私有 保护 公有 单词首字母大写 比如 Main CharacterController 2 接口 interface 名 静态 私有 保护 公有
  • 鸟哥的linux私房菜一书

    第0章 计算机概论 计算机的容量单位 速度单位 CPU的指令周期使用MHz或者GHz为单位 Hz就是秒分之一 网络传输使用的bit为单位 Mbps Mbits per second 就是每秒多少Mbit cpu是中央处理器 有控制器和运算器
  • C# FTP 遍历所有文件包括子目录文件下载

    文章修改2011 12 3号 char seperator n 现改为 char seperator n 今天用到下载FTP里所有文件和目录的程序 网上找了很久没找到 没办法只好自己写了 代码写得不太优化希望有兴趣的朋友可以研究优化一下性能
  • 自己搭建和部署禅道测试环境

    1 本人使用的是Windows一键安装 地址如下https www zentao net download 80138 html 中文版 下载完成之后 双击解压到根目录C 或D 进入 2 双击运行start exe 选择启用禅道 如果出现如
  • 常见绕过姿势小结

    一 SQL注入 假设关键词被过滤掉 我们尝试以下绕过方法 1 大小写绕过 id 1 AND 1 1 id 1 anD 1 2 查看是否存在注入 id 1 And 1 1 id 1 aNd
  • vue 点击图标切换图标_Vue的动画SweetAlert图标

    vue 点击图标切换图标 Vue的动画SweetAlert图标 Animated SweetAlert Icons for Vue A clean and simple Vue wrapper for SweetAlert s fantas
  • Ubuntu如何把主文件夹的中文设置成英文

    打开终端 输入命令 export LANG en US 接着输入更新命令 xdg user dirs gtk update 然后输入命令 export LANG zh CN 最后输入重启命令 sudo reboot 重启之后就可以看到主文件
  • Lanbda表达式详解

    lambda 表达式最大的用处就是简写代码 在需要降低代码之间的耦合性和侵入性较多使用匿名内部类来解决这一问题 我们使用lambda表达式可以将匿名内部类最大程度的简写 除此之外lambda表达式的作用就是让你的代码变得更加优雅 文件过滤器
  • log4j.properties log4j.xml 路径问题

    我的博客现在已经搬家到极客导航的博客模块中链接地址是 极客博客 顺便做了个程序员资源导航站www gogeeks cn 有兴趣的朋友不妨看一看有哪些还没了解到的IT方面的东西 比如框架 书籍 教程 开源社区等等吧 自动加载配置文件 1 如果
  • 从ReentrantLock的角度来看AQS原理

    ReentrantLock ReentrantLock作为java api层面的加锁方式 其性能比synchronized更好 synchronized进行优化后性能差不太多 灵活性更强 ReentrantLock synchronized
  • MySql 学习(4)Linux MySql 开启远程服务

    1 MySql设授权远程访问 1 使用mysql u root p登录mysql 2 使用mysql数据库 真正的数据库 而非数据库软件 将所有数据库的所有表 的所有权限 all privileges 授予通过任何ip 访问的root用户
  • quartusII创建第一个VHDL程序

    选择file new project wizard 点击next 这一步忽略 输入项目的名称 自己写就可以 随便什么 不要有空格 默认选择空文件 next 如果需要增加写好的文件 自己选择 不需要就忽略 直接next 选择硬件器件型号 打包
  • 错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。

    错误信息 未在本地计算机上注册 microsoft ACE oledb 12 0 提供程序 解决办法 去下载 然后安装就行了 本错误是由于你使用了ACCESS2007版本建立的数据库 但服务器中没有相配合使用的程序 所以出错 未在本地计算机
  • HG海光X86

    1 X86模式 只有Intel和AMD可以持续演进 架构授权体系封闭 仅限于Intel和AMD交叉授权 其他厂家无法拿到完整授权 2 HG授权来自AMD 属于IP授权且盒子公司被AMD控股 核心技术受控在AMD IP授权只能用 不能改 无法
  • 临界区(锁)windows/linux通用

    lock h pragma once ifdef WIN32 include