lock与unlock用法(简单易懂)

2023-11-14

lock最简单的用法就是:在多线程中,我们往往要操作同一块内存,但是同一时间只允许一个线程操作,其他想要操作,只能等到被释放。这个时候就可以用到lock(文件共享锁)

用法:

mutex  +名称

例如 mutex  testlock

举个例子:

例如我们要创建一个全局的数组,接收数据

//创建锁
mutex  testlock

unsigned char g_test[4]={0,0,0,1};

//此时我们假设有两个线程要进行操作这个数组
thread t1(test_1Thread)
thread t2(test_2Thread)
t1.join();
t2.join();
int test_1Thread()
{
    //操作之前加锁
      testlock.lock();
      g_test[2]=0x01;
     //操作完成释放 
     testlock.unlock();
}


int test_2Thread()
{
     //操作之前加锁
     testlock.lock();
     g_test[1]=3;
     g_test[3]=0x05;
     //操作完成释放 
     testlock.unlock();
}

以上都是伪代码,只需要理解其中意思即可。用法很简单,也是多线程中常用的锁。

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

lock与unlock用法(简单易懂) 的相关文章

  • 什么是算法?

    算法 解决特定问题求解步骤的描述 在计算机中表现为指令的有限序列 并且每条指令表示一个或多个操作 算法特性 输入 输出 有穷性 确定性 可行性 算法设计的要求 正确性 1 算法程序没有语法错误 2 算法程序对于合法输入数据能够产生满足要求的
  • cmake设定项目版本信息

    一 version h in模板文件 pragma once define VER MAJOR 1 define VER MINOR 0 define VER BUILD 1 define VER REVISION PROJECT REVI

随机推荐

  • C#试题

    1 关于C 中的结构 一下说法中错误的是 选择一项 A 结构可以有构造函数 B 结构体内可以有字段 C 结构体内可以有方法 D 结构体内可以被继承 2 在C 编程中 访问修饰符控制程序对类中成员的访问 如果不写访问修饰符 类的默认访问类型是
  • excludePathPatterns方法不生效

    1 场景 我在项目中配置了License证书授权的功能 然后在配置拦截器的时候拦截了所有的请求都必须验证License是否到期 但是这样会导致接口响应慢 所以打算使用 excludePathPatterns 方法对部分url请求放行 例如我
  • element UI 表格table多个数值进行排序筛选

    效果图 1 表格html部分
  • Java序列化和反序列化(详解)

    一 理解Java序列化和反序列化 Serialization 序列化 将java对象以一连串的字节保存在磁盘文件中的过程 也可以说是保存java对象状态的过程 序列化可以将数据永久保存在磁盘上 通常保存在文件中 deserializatio
  • ffmpeg源码安装

    ffmpeg源码安装 http blog yundiantech com log blog id 35 1 安装yasm tar xvzf yasm 1 3 0 tar gz cd yasm 1 3 0 configure make mak
  • 北斗高精度卫星接收机的分类

    北斗卫星导航接收机是用来收集处理天线接收到的电磁信号 理想的接收机抑制所有不需要的噪声 并对需要的信号不增加任何噪声或干扰 不管信号的形式或格式如何 它都可以变换 以适合信号处理器检波电路所要求的特性 然后再送到智能用户接口 北斗卫星导航接
  • [war打包]在maven-antrun-plugin复制更改了配置文件但是maven-war-plugin打包出来配置文件没变化(草稿)

    前言 背景介绍 在某个java web项目中 需要根据maven的profile的配置进行properties文件的切换 例如 项目的配置文件结构如下 在resources文件夹下面分别有profiles文件夹及conf文件夹 重点关注 p
  • 【OpenCV入门教程Java版之一】安装OpenCV:OpenCV4.6.0+IDEA开发环境配置

    在读研期间的研究方向与图像处理有一点相关 后来由于工作可能会有需要 所以晚上回去也闭门研究了OpenCV和图像处理相关的知识 也准备写一个OpenCV系列的专栏作为自己的学习笔记 也分享给大家 如果有写错的地方也欢迎大家及时指出 好了这篇文
  • 搭建STM32F407的SPI-Flash(基于STM32CubeMX)

    网上有不少例子 都对 但对我来说碰到几个坑 避免以后再犯错 mark下 目标 通过SPI接口 对Nor Flash进行读写 开发板上Nor Flash 是W25Q128 128Mbit 也就是16MB样子 CubeMx端配置 配置要分两个
  • OpenStack--实现内外网结构

    类似于阿里云 ECS 主机的内外网 双网卡不通网段 的结构 最终实现内外网区分隔离 https www aliyun com product ecs utm medium text utm source baidu utm campaign
  • STM32低速时钟频率校准方法

    RT Thread的PM组件利用LPTIM来实现低功耗唤醒和系统tick补偿 而LPTIM的时钟源一般会选择LSI LSI这玩意儿功耗虽然只有几百nA 但是频偏非常大 例如STML051手册上就说LSI的频率在26kHz 56kHz之间 典
  • STL-stack容器和queue容器

    stack概念 stack是一种先进后出 First In Last Out FILO 的数据结构 它只有一个出口 栈中只有顶端的元素才可以被外界使用 因此栈不允许有遍历行为 与queue相似 stack也是一个适配器类 它给底层vecto
  • %d %ld %lld

    因特网 互联网 以太网 局域网的区别 相信下面几个表达方式 就能说明问题吧 d int ld long lld long long 在32位编译器上 int long 32bit long long 64bit
  • 心得:Javascript的内存释放实验

    我以前也看过关于javascript的内存释放的文章 但我从来也没仔细看过 原因 一来我觉得这个东西可有可无 二来 鬼知道这些理论到底有没有科学根据 今天我做了一个小小的实验 证实内存释放还是有用的 比如有如下程序 var a new Ar
  • 一个三节点的PVE 6.1+CEPH集群,因为系统损坏,全部重新安装。

    注意 逐一重装系统 重新加入PVE集群 重新加入CEPH集群 先禁用ceph的recover 避免其因OSD丢失重建 任一节点执行 for i in noout nobackfill norecover do ceph osd set i
  • windows上面运行jar文件

    1 ctrl r进入CMD模式 2 切换到jar所在的目录 我的XXX jar在D workspace下面 3 运行jar java jar XXX jar
  • Redis过期策略与淘汰策略

    redis为什么这么快 原因之一就是Redis操作都是基于内存的 既然是基于内存的 而内存的大小是有限的 当内存不足或占用过高时 Redis会采用内存淘汰机制进行数据淘汰 一 Redis的过期策略 Redis在设置缓存数据时指定了过期时间
  • 前端常用第三方库

    常用功能的第三方插件集合 一 下载 1 原生 1 a 标签 只能同源下载 2 iframe 下载 支持跨域get请求 3 Form 表单下载 支持跨域get和post请求 2 第三方插件 1 FileSaver js 2 StreamSav
  • [leetcode] 358. Rearrange String k Distance Apart 解题报告

    题目链接 https leetcode com problems rearrange string k distance apart Given a non empty string str and an integer k rearran
  • lock与unlock用法(简单易懂)

    lock最简单的用法就是 在多线程中 我们往往要操作同一块内存 但是同一时间只允许一个线程操作 其他想要操作 只能等到被释放 这个时候就可以用到lock 文件共享锁 用法 mutex 名称 例如 mutex testlock 举个例子 例如