解决线程中使用线程锁

news2024/11/16 3:22:35

问题:多线程操作同一个对象,利用锁保证数据操作的原子性

解决方案:使用线程锁

简要说明:线程锁本质上就是添加一个公共状态量,当线程拿到状态量后,则继续执行,否则就等待

扩展1:自己实现这个功能其实也很方便,可以创建一个队列,里边只塞一个值,每一个添加锁的线程,都去queue.get()值,拿到值会继续往下执行,否则等待,拿到值的等运行结束后,再往队列里queue.put()一个值即可。这里利用了队列本身的特性,当队列里没有值时,队列会处于阻塞状态。等到队列里有值时,会第一时间将值取出

扩展2:添加一个公共变量lock=1。当有线程拿到这个公共变量后,立即将lock值赋值为0,在条件中判断当lock为1时,继续执行,否则阻塞。拿到1值后的线程执行无再将值赋为1即可。另外一个线程逻辑可能会复杂一些,需要隔一段时间取一次lock值进行判断(心跳模式)。理论上讲,这种方式存在一定的隐患,没有很建议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2087523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【文献及模型、制图分享】大运河江苏段沿线典型传统村落空间形态特征与影响因素及其启示

文献介绍 大运河见证了中国数千年的繁荣与变迁,沿线传统村落是其历史文化的直接展示。对这些村落的空间形态进行研究,不仅能够深入了解传统村落形态特征,还为其保护和发展提供有力的支持。以大运河江苏段沿线的48个传统村落为研究对象&#…

C++入门基础知识40——【关于C++ 运算符——赋值运算符】

成长路上不孤单😊【14后,C爱好者,持续分享所学,如有需要欢迎收藏转发😊😊😊😊😊😊😊!!!!&#xff…

大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

CSS3中的字体详解

字体 网页字体的三个来源: 用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字体,可以用font-face规则随网页一起发送到浏览器。 字体相…

【文献及模型、制图分享】传统村多功能发展特征识别、类型划分与差异化引导——以安徽黟县44个传统村为例(多指标综合法及耦合协调模型

文献介绍 揭示多功能发展特征、划定多功能协同发展类型是传统村落传承保护与活化利用的现实需要,是传统村落保护发展研究的重要议题。以黟县44个中国传统村落为研究对象,采用多指标综合法及耦合协调模型,科学测度传统村落多功能发展水平及协…

【赵渝强老师】MongoDB的存储引擎

存储引擎(Storage Engine)是MongoDB的核心组件,它负责管理数据如何存储在硬盘(Disk)和内存(Memory)上。从MongoDB 3.2 版本开始,MongoDB支持多种类型的数据存储引擎。 视频讲解如下&…

“JavaScript里的多线程“WebWorker

"JavaScript里的多线程"WebWorker 引言 简要介绍主题: WebWorker 是一种在 Web 开发中用来解决 JavaScript 单线程限制的重要技术。通过 WebWorker,可以将一些复杂或耗时的任务放到后台线程中执行,从而避免阻塞主线程,…

Java 7.1 - 理论 算法 协议

什么是 CAP 理论? C:Consistency 一致性 A:Availability 可用性 P:Partition 分区容错性 对于理论计算机科学,CAP 定理指出,对于一个分布式系统而言,CAP 中的三个只能同时满足两个。 分区容…

从算法到硬件实现:《基于FPGA的数字信号处理》(可下载)

数字信号处理是现代电子系统中不可或缺的核心。FPGA是实现复杂DSP算法的理想平台。《基于FPGA的数字信号处理(第2版)》由资深工程师高亚军编著,是一本深入探讨FPGA在数字信号处理领域应用的专业书籍。 本书以Xilinx新一代28nm工艺芯片7系列FP…

设计模式 -- 组合模式(Composite Pattern)

1 问题引出 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图: 2 基本介绍 组合模式(Composite Pattern)&#xff0c…

Musetalk-Stream: 未来数字人的智能语音交互革命“

实时交互流式数字人,实现音视频同步对话。基本可以达到商用效果 ernerf效果musetalk效果wav2lip效果 Features ⦁ 支持多种数字人模型: ernerf、musetalk、wav2lip ⦁ 支持声音克隆 ⦁ 支持数字人说话被打断 ⦁ 支持全身视频拼接 ⦁ 支持rtmp和webr…

C语言中的预处理器字符串化与拼接操作符:底层原理及实现细节

引言 在C语言中,预处理器是一个重要的工具,它在编译前对源代码进行处理,从而实现了诸如条件编译、宏定义等功能。本文将深入探讨两种预处理器操作符:# 和 ##,它们分别用于字符串化和拼接标识符。 字符串化操作符 # …

1、Java简介+DOS命令+java的编译运行(字节码/机器码、JRE/JVM/JDK的区别)+一个简单的Java程序

​ Java类型: JavaSE 标准版:以前称为J2SE,主要用来开发桌面应用程序或简单的服务器应用程序。JavaEE 企业版:建立在 Java SE 的基础上,包含了支持企业级应用程序开发和部署的标准和规范(如Servlet、Jsp、…

自建 git 服务器

所有老板(至少 99%)都一样,想花一分钱办两分钱的事,想招十块钱的人干二十块钱的事……我表示理解(A Pei ~~ 既想马儿跑得快,又想马儿不吃草) 在老板眼中,我恰好是那个性价比最高的人…

AI赚钱成功案例|像素级拆解一键生成提示词 文生图 图生视频

本文背景 之前弄了个诗词转画面大师,就是你给个句子,它就能给你画面提示词,接着用 AI 绘图软件能生成很棒的画面,再把图片弄成视频,最后能出个不错的作品。 最近看到那些漫剪大师的作品,配的歌好听&#xf…

设计模式结构型模式之适配器模式

结构型模式之适配器模式 一、概述和使用场景1、概述2、使用场景:3、主要分类 二、 代码示例1、类适配器模式2、接口适配器3、对象适配器 四、总结1、适配器模式2、适配器模式的优点3、适配器模式的缺点 一、概述和使用场景 1、概述 适配器模式是一种结构型设计模式…

会声会影分离的音频怎么导出 会声会影分离音频后如何合并 视频剪辑制作教程软件

出色的音频编辑,可以显著提升剪辑作品的质量。一款优秀的视频剪辑软件,必定拥有强大的音频编辑能力。以会声会影视频剪辑软件为例,它不仅具备丰富的音频编辑功能,还允许用户自定义音频导出参数。有关会声会影分离的音频怎么导出&a…

深入学习SQL优化的第五天(最后一天)

子查询 1321 餐 馆 营 业 额 变 化 增 长 1321. 餐馆营业额变化增长 表: Customer------------------------ | Column Name | Type | ------------------------ | customer_id | int | | name | varchar | | visited_on | date | | amount …

【曾哥分享-1】云 WAF 绕过

幕布链接:【曾哥分享-1】云 WAF 绕过 - 幕布

【DSP+FPGA】基于Virtex-7 FPGA + C6678 DSP的高性能实时信号处理平台

DSP FPGA 协同处理架构板载 1 个TMS320C6678 多核DSP处理节点板载 1 片 XC7VX690T FPGA处理节点板载 1 个FMC 接口板载4路SFP光纤接口FPGA 与 DSP 之间采用高速Rapid IO互联 基于Virtex-7 FPGA的高性能实时信号处理平台,该平台采用1片TI的KeyStone系列多核DSP TMS3…