windows C++多线程同步<3>-互斥量
windows C++多线程同步<3>-互斥量
概念,如下图:
另外就是互斥对象谁拥有,谁释放
那么一个线程允许多次获取互斥对象吗?
答案是允许,但是申请多次就要释放多次,否则其他线程获取不到互斥对象;同一个线程可以多次获取,即使不释放也可以,但是这种做法有问题极易导致线程同步出现异常,强烈不建议使用;
互斥对象和事件对象两者都是内核对象,使用方法也几乎相同;
常用API
WaitForSingleObject(g_cs , INFINITE);
获取互斥对象
ReleaseMutex(g_cs);
释放互斥对象
#include<iostream>
#include<Windows.h>
using namespace std;HANDLE g_cs;
int ticks =100;
DWORD WINAPI Func1(LPVOID lpParameter)
{while(true){WaitForSingleObject(g_cs , INFINITE);if(ticks>0){cout<<"thread1 "<<ticks<<endl;ticks--;ReleaseMutex(g_cs);}else{ReleaseMutex(g_cs);break;}}return 0;
}
DWORD WINAPI Func2(LPVOID lpParameter)
{while(true){WaitForSingleObject(g_cs , INFINITE);if(ticks>0){cout<<"thread2 "<<ticks<<endl;ticks--;ReleaseMutex(g_cs);}else{ReleaseMutex(g_cs);break;}}return 0;
}int main()
{g_cs = CreateMutex(NULL,FALSE , NULL);HANDLE hThread1;HANDLE hThread2;hThread1 = CreateThread(NULL , 0 ,Func1,NULL,0,NULL);hThread1 = CreateThread(NULL , 0 ,Func2,NULL,0,NULL);Sleep(2000);return 0;
}相关文章:
windows C++多线程同步<3>-互斥量
windows C多线程同步<3>-互斥量 概念,如下图: 另外就是互斥对象谁拥有,谁释放 那么一个线程允许多次获取互斥对象吗? 答案是允许,但是申请多次就要释放多次,否则其他线程获取不到互…...
(学习笔记-系统结构)Linux内核与windows内核
内核 计算机是由各种外部硬件设备组成的,比如内存、CPU、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以这个中间人由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只关心…...
find_in_set在oracle下的解决方案
比如一张表: artile (id,type,content); # type:1表示文艺类,2表示小说类,3表示传记,4表示传说,等等5,6,7,8表数据: idtypecontent13,1dfasdfasdf21,3,6,8dfasdf36,8,9add 现在要找出3传记类的artile记录…...
智能垃圾桶
1.树莓派3B引脚图 2. 原理图 3.舵机线图 搜了这个这么多3b的资料,自己只是想解决如何下程序和运行程序的博客,网上搜集的资料全是讲如何通过SSH或者网线连接树莓派,通过直接连接屏幕的教程较少。 遇到问题:不论是舵机还是其他传…...
面试题-TS(十):如何处理可选属性和默认参数?
面试题-TS(10):如何处理可选属性和默认参数? 1. 可选属性 1.1 什么是可选属性? 在TypeScript中,可选属性是指在定义接口或类时,指定某些属性不是必须的,可以存在也可以不存在。使用可选属性可以让我们定…...
Istio Pilot源码学习(一):Pilot-Discovery启动流程、ConfigController配置规则发现
本文基于Istio 1.18.0版本进行源码学习 1、Pilot-Discovery工作原理 Pilot-Discovery是Istio控制面的核心,负责服务网格中的流量管理以及控制面和数据面之间的配置下发 Pilot-Discovery从注册中心(如Kubernetes)获取服务信息并汇集ÿ…...
数据结构:顺序表(C实现)
个人主页 水月梦镜花 个人专栏 C语言 ,数据结构 文章目录 一、顺序表二、实现思路1.存储结构2.初始化顺序表(SeqListInit)3.销毁顺序表(SeqListDestroty)4.打印顺序表(SeqListPrint)5.顺序表尾插(SeqListPushBack)and检查容量(SeqListCheckCapacity)6.顺序表头插(Se…...
素描基础知识
素描基础入门 1.基础线条 1.1 握笔姿势及长线条 2.排线 2.1 不同姿势画排线 2.1.1 姿势画排线 2.1.2 用手腕画排线 2.1.3 小拇指画排线 2.1.4 叠加排线 2.1.5交叉排线 2.2 纸张擦法 2.3 排线学习榜样 2.4 四种常见的排线 3、定向连线 4、一点透视 4.1 透视的规律 4.2 焦点透视…...
【Chat GPT】用 ChatGPT 运行 Python
前言 ChatGPT 是一个基于 GPT-2 模型的人工智能聊天机器人,它可以进行智能对话,同时还支持 Python 编程语言的运行,可以通过 API 接口进行调用。本文将介绍如何使用 ChatGPT 运行 Python 代码,并提供一个实际代码案例。 ChatGPT …...
cartographer发布畸变矫正后的scan数据
实现方式: 模仿源代码,在cartographer_ros写一个函数,以函数指针的方式传入cartographer后端,然后接收矫正后的scan数据,然后按照话题laserScan发布出来。 需要同时发布点云强度信息的,还要自己添加含有强度…...
Idea中git push to origin/master was rejected错误解决方案
Idea中git push to origin/master was rejected错误解决方案 问题描述解决方法 问题描述 idea开发中,需要将项目发布到gitee上,在gitee上创建仓库后,通过idea中git推送项目代码提示: push to origin/master was rejected 解决方法 gitee创建仓库时创建了README.md文件,本地…...
docker版jxTMS使用指南:自定义频率型动态管控
本文讲解4.4版jxTMS中如何自行定义一个频率型的动态管控,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看ÿ…...
【Docker】初识Docker以及Docker安装与阿里云镜像配置
目录 一、初识Docker 二、安装Docker 三、Docker架构 四、配置Docker镜像加速器 一、初识Docker Docker是一个开源的应用容器引擎,诞生于2013年,基于Go语言实现,dotCloud公司出品,Docker开源让开发者打包他们的应用以及依赖包到…...
C语言:动态内存管理
文章目录 一、动态内存函数1. malloc2. calloc3. realloc4. free 二、常见的错误1.malloc或calloc开辟的空间未检查2.越界访问3.对非malloc和calloc开辟的空间,用free释放4.对同一块动态内存多次释放5.用free释放动态内存的一部分 三、通讯录(动态版本改写)总结 一、…...
如何往MySQL中插入100万条数据?
需求 现在有一个 数据量 为100万的数据样本 100w_data.sql 其数据格式如下,截取最后十条数据 999991,XxGdnLZObA999991,XxGdnLZObA,XxGdnLZObA,2020-3-18,1 999992,TBBchSKobC999992,TBBchSKobC,TBBchSKobC,2020-9-8,2 999993,rfwgLkYhUz999993,rfwgLkYhUz,rfwgLk…...
IntelliJ IDEA 2023.2 最新变化
主要更新 AI Assistant 限定访问 Ultimate 在此版本中,我们为 IntelliJ IDEA 引入了一项重要补充 – AI Assistant。 AI Assistant 当前具备一组由 AI 提供支持的初始功能,提供集成式 AI 聊天,可以完成一些任务,例如自动编写文档…...
1300*B. T-primes
解析: 有且只有三个因数,当且仅当,完全平方数并且sqrt(n)为素数 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N1e55; ll t,n; bool prime(ll x){if(x<2) return 0;for(int…...
重新C++系列之运算符重载
一、什么是运算符重载 简单来讲就是对运算符赋予新的意义,但是又不能改变原有的含义,它本身也就是一个函数。运算符重载的本质是以函数的方式来体现。 二、运算符重载有几种 1、按照作用域来划分,有全局操作符重载函数和成员函数操作符重载函…...
kotlin异常处理try-catch-finally
kotlin异常处理try-catch-finally fun main(args: Array<String>) {try {println("a")} catch (e: Exception) {//异常捕获println("a-catch: $e")} finally {//善后,无论是否异常,都会执行println("a-finally")}t…...
Pytorch在cuda、AMD DirectML和AMD CPU下性能比较
一、测试环境 CUDA环境: i7-8550u 16G DDR4 2133MHz nVidia MX150 2GB AMD DirectML环境: Ryzen 5 5600G 32G DDR4 3200MHz Vega7 4GB AMD 纯CPU环境:Ryzen 5 5600G 32G DDR4 3200MHz 其他硬件配置的硬盘、电源均一致。Pytorch版本为2.0.0,Pyt…...
创龙T113-i开发板:从SDK解压到镜像打包,一个完整Linux系统构建实录(含80分钟编译避坑)
创龙T113-i开发板实战:从零构建嵌入式Linux系统的完整指南 1. 开发环境准备与SDK解压 第一次接触全志T113-i开发板时,最令人头疼的莫过于搭建开发环境。与常见的树莓派或BeagleBone开发板不同,工业级嵌入式设备往往需要更专业的工具链支持。我…...
nlp_gte_sentence-embedding_chinese-large实战案例:客服工单自动归类与聚类分析
nlp_gte_sentence-embedding_chinese-large实战案例:客服工单自动归类与聚类分析 1. 引言:客服工单处理的痛点与解决方案 每天处理成千上万的客服工单是什么体验?想象一下这样的场景:客服团队每天收到大量用户反馈,从…...
医疗工作者的AI助手:MedGemma在症状鉴别诊断中的实战应用
医疗工作者的AI助手:MedGemma在症状鉴别诊断中的实战应用 1. 医疗AI的新范式:透明化诊断推理 在繁忙的临床工作中,医生们常常面临这样的挑战:如何在有限时间内准确识别症状组合背后的病因?传统方法依赖个人经验记忆和…...
2026年GPT-5.4实战应用完全指南
2026 年 3 月 OpenAI 发布的 GPT-5.4,是 AI 从对话工具转向自动化执行代理的里程碑产品,凭借原生计算机操控、百万 Token 上下文、Excel 深度集成、强推理编程四大核心突破,覆盖企业、专家、讲师、管理者、主播、电商、小白七类人群ÿ…...
WebPageTest API完全手册:自动化网站性能监控与集成
WebPageTest API完全手册:自动化网站性能监控与集成 【免费下载链接】WebPageTest Official repository for WebPageTest 项目地址: https://gitcode.com/gh_mirrors/we/WebPageTest WebPageTest 是一款强大的网站性能测试工具,其提供的 API 功能…...
如何用AI驱动的智能字幕工具解决日语视频字幕制作难题?零基础也能实现90%准确率的字幕生成方案
如何用AI驱动的智能字幕工具解决日语视频字幕制作难题?零基础也能实现90%准确率的字幕生成方案 【免费下载链接】N46Whisper Whisper based Japanese subtitle generator 项目地址: https://gitcode.com/gh_mirrors/n4/N46Whisper 日语视频字幕制作常常让内容…...
3步搞定Linux启动盘:Rufus格式化ext文件系统全攻略
3步搞定Linux启动盘:Rufus格式化ext文件系统全攻略 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus 还在为Windows下创建Linux启动盘而烦恼吗?每次制作Linux安装U盘都要在虚…...
Speech Seaco Paraformer问题解决:识别不准?试试热词功能提升准确率
Speech Seaco Paraformer问题解决:识别不准?试试热词功能提升准确率 1. 语音识别不准的常见困扰 语音识别技术在日常工作和生活中应用越来越广泛,但很多用户在使用过程中都会遇到一个共同问题:识别结果不准确。特别是当录音内容…...
BetterJoy终极指南:3大难题快速解决Switch控制器PC连接问题
BetterJoy终极指南:3大难题快速解决Switch控制器PC连接问题 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode…...
快手投放的困局:计划搭建占80%时间,人效去哪了?
25人的代理商团队,10个人专职建计划,每天点鼠标点到手麻。换了种做法后,2个人2小时搞定1000条计划。他们做对了什么? 01 为什么快手投放这么累? 做快手投放的朋友,尤其是服务多个客户的代理商,…...
