CRITICAL_SECTION 用法

news2024/10/7 4:37:17

#include <stdio.h>
#include <windows.h>


typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
CRITICAL_SECTION g_cs; //声明关键段

// 共享资源
char g_cArray[10];

unsigned int g_Count = 0;
DWORD WINAPI ThreadProc10(LPVOID pParam)
{
    // 进入临界区
    EnterCriticalSection(&g_cs);
    // 对共享资源进行写入操作
    for (int i = 0; i < 10; i++)
    {
        g_Count++;
        printf("g_Count is %d\n", g_Count);
        Sleep(1);
    }
    // 离开临界区
    LeaveCriticalSection(&g_cs);
    return 0;
}

DWORD WINAPI ThreadProc11(LPVOID pParam)
{
    // 进入临界区
    EnterCriticalSection(&g_cs);
    // 对共享资源进行写入操作
    for (int i = 0; i < 10; i++)
    {
        g_Count--;
        printf("g_Count is %d\n", g_Count);
        Sleep(1);
    }
    // 离开临界区
    LeaveCriticalSection(&g_cs);
    return 0;
}

int main()
{
    // 初始化临界区
    InitializeCriticalSection(&g_cs);
    // 启动线程
    HANDLE ThreadProcHand10 = CreateThread(NULL, 0, ThreadProc10, 0, 0, NULL); // 创建线程
    HANDLE ThreadProcHand11 = CreateThread(NULL, 0, ThreadProc11, 0, 0, NULL); // 创建线程
    // 等待计算完毕
    Sleep(300);
    return 0;
}

输出:

线程中,屏蔽掉  EnterCriticalSection(&g_cs)和LeaveCriticalSection(&g_cs) 将打印如下:

 

 

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

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

相关文章

返回一组数据中出现频率最多的元素(众数),可能是一个或多个statistics.multimode()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 返回一组数据中出现频率最多的 元素(众数)&#xff0c;可能是一个或多个 statistics.multimode() 选择题 下列说法错误的是? import statistics data [0, 1, 1, 2, 2, 3] print(【显示】d…

无涯教程-Perl - endservent函数

描述 此功能告诉系统您不再期望使用getservent从服务文件中读取条目。 语法 以下是此函数的简单语法- endservent返回值 此函数不返回任何值。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perlwhile(($name, $aliases, $port_number,$protocol_name)getservent())…

【宝藏系列】嵌入式软件设计的 7 种架构模式

【宝藏系列】嵌入式软件设计的 7 种架构模式 文章目录 【宝藏系列】嵌入式软件设计的 7 种架构模式前言1️⃣分层架构2️⃣多层架构3️⃣管道/过滤器架构4️⃣客户端、过滤器架构5️⃣模型、视图、控制器架构&#xff08;MVC&#xff09;6️⃣事件驱动架构7️⃣微服务架构 前言…

【java】访问权限

java访问权限 publicprotecteddefaultprivate内部类 java中访问权限修饰符有以下4个&#xff1a;public、protected、default、private public public代表着公共的&#xff0c;在java源码中。公共类只能有一个&#xff0c;而且必须和源码文件名相同。 我们发现一直写的main方法…

基于Java+SpringBoot+Vue的企业客户信息反馈平台设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

高薪Offer收割机之聚集索引和非聚集索引

什么是聚集索引&#xff0c;非聚集索引&#xff0c;回表查询&#xff0c;覆盖索引 聚集索引就是将数据存储与索引放到了一起&#xff0c;索引结构的叶子节点保存了行数据&#xff0c;一张表必须有且只有一个聚集索引。 如果存在主键&#xff0c;主键就是聚集索引&#xff0c;…

180天,小卡拉米 - 编程路线,学习计划!

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 职业生涯这条路&#xff0c;我在前面10年开的路&#xff0c;将让你少走很多弯路&#x1f463;&#xff01; 工作了这么多年&…

Nginx开启gzip网页传输压缩配置

场景 Nginx 服务器为网页压缩专门提供了 gz 模块&#xff0c;并且模块中的相关指令均可以设置在http、server或location块中&#xff0c; 实现服务器端按照指定的设置进行压缩。 CentOS7中解压tar包的方式安装Nginx&#xff1a; CentOS7中解压tar包的方式安装Nginx_centos7…

ospf减少LSA更新

实验及实验要求 一、思路 1.根据区域划分IP地址 2.使公网可通---写缺省 3.使R3成为MGRE中心站点&#xff0c;R5、R6、R7为分支站点 4.一个个去配置ospf区域和RIP区域&#xff0c;确保每个区域配置无误 5.区域0要更改OSPF在接口的工作类型为broadcast &#xff0c;并使R3为…

WDM设备栈

图 1一块USB主控制器卡&#xff08;主控芯片为VIA VL805&#xff09; 图中的板卡包含USB主控制器&#xff08;USB Host Controller&#xff09;、USB集线器&#xff08;USB Hub&#xff09;&#xff0c;这里USB集线器扩展了4个USB端口&#xff08;USB Port&#xff09;。 PCI…

智慧工地源码:数字孪生智慧工地可视化解决方案

一、智慧工地建设背景 我国经济发展正从传统粗放式的高速增长阶段&#xff0c;进入高效率、低成本、可持续的中高速增长阶段。随着现代建筑的复杂度和体量等不断增加&#xff0c;施工现场管理的内容越来越多&#xff0c;管理的技术难度和要求在不断提高。传统的施工现场管理模…

C++ 测试框架 GoogleTest 初学者入门篇 丙

断言 什么是断言&#xff1f;断言是用来对表达式执行比较的代码块&#xff0c;调用时类似函数。当表达式一致时&#xff0c;断言返回成功&#xff0c;否则失败。 googletest 的断言是一组宏定义。分为 ASSERT_* 和 EXPECT_* 两种。 比如 ASSERT_EQ(1, 2);EXPECT_EQ(1, 2);上…

Element-UI简介

目录 安装 常用组件 Container 布局容器 Button 按钮 MessageBox 弹框 Form 表单验证 element-ui是一个前端的ui框架&#xff0c;封装了很多已经写好的ui组件&#xff0c;例如表单组件&#xff0c;布局组件&#xff0c;表格组件.......是一套桌面端组件。 Element - 网站…

JAVA SpringBoot 项目 多线程、线程池的使用。

1.1 线程&#xff1a; 线程就是进程中的单个顺序控制流&#xff0c;也可以理解成是一条执行路径 单线程&#xff1a;一个进程中包含一个顺序控制流&#xff08;一条执行路径&#xff09; 多线程&#xff1a;一个进程中包含多个顺序控制流&#xff08;多条执行路径&#xff0…

斗轮机无线控制系统技改方案

一、应用背景 马钢的前身是成立于1953年的马鞍山铁厂&#xff0c;2019年马钢集团正式成为中国宝武控股子公司。马钢产品以建筑用型线材为主&#xff0c;满足重型工业厂房、轻钢结构、高层建筑、桥梁结构、工业管道等构件的加工需要。目前马钢在岗员工4.8万人&#xff0c;具备了…

采用模块化方式编译

一、前言 比如&#xff1a;uImage下有很多驱动文件&#xff0c;但是驱动开发时&#xff0c;要频繁更改驱动文件&#xff0c;如果每次编译整个uImage编译会浪费时间&#xff0c;所以引入模块化方式编译&#xff0c;把驱动设置为模块化编译&#xff0c;这样每次更改或重新编译时…

v4l2-ctl 命令查看 RK3568 上的摄像头节点

使用 v4l2-ctl 命令查看 RK3568 上的摄像头节点&#xff0c;可以按照以下步骤进行操作&#xff1a; 首先&#xff0c;请确保您的 RK3568 设备上已经安装了 v4l-utils 工具包。如果没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; $ sudo apt-get install v4l-utils打…

【HMS Core】Health Kit 血压、血糖等数据返回数据包含max,min,avg,last 数据,这些数据的含义是什么意思?

【问题描述】 1. 血压、血糖等数据返回数据包含max,min,avg&#xff0c;last 数据&#xff0c;这些数据的含义是什么意思&#xff1f; 2. 如何获取用户上传健康数据的腕表的型号 【解决方案】 1、血压原子采样统计数据类型开放的是多日统计查询接口&#xff0c;统计的维度是按…

FinClip 支持小程序维度域名配置;桌面端体验活动进行中

FinClip 的使命是使您&#xff08;业务专家和开发人员&#xff09;能够通过小程序解决关键业务流程挑战&#xff0c;并完成数字化转型的相关操作。不妨让我们看看在本月的产品与市场发布亮点&#xff0c;看看是否有助于您实现目标。 产品方面的相关动向&#x1f447;&#x1f…

APT60DQ20BG-ASEMI快恢复二极管APT60DQ20BG

编辑&#xff1a;ll APT60DQ20BG-ASEMI快恢复二极管APT60DQ20BG 型号&#xff1a;APT60DQ20BG 品牌&#xff1a;ASEMI 封装&#xff1a;TO-3P 恢复时间&#xff1a;≤35ns 正向电流&#xff1a;60A 反向耐压&#xff1a;200V 芯片个数&#xff1a;双芯片 引脚数量&…