CRITICAL_SECTION 用法

#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.hqwc.cn/news/56311.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据技术之Hadoop(二)

目录 一、Hadoop的诞生 二、大数据概述 三、大数据软件生态 3.1 数据存储相关技术 3.2 数据计算相关技术 3.3 数据传输相关技术 四、什么是Hadoop 本篇主要讲解大数据的核心概念以及Hadoop的基本介绍。 一、Hadoop的诞生 大数据的发展与日益庞大的数据量是密不可分的。从…

【雕爷学编程】MicroPython动手做(33)——物联网之天气预报3

天气&#xff08;自然现象&#xff09; 是指某一个地区距离地表较近的大气层在短时间内的具体状态。而天气现象则是指发生在大气中的各种自然现象&#xff0c;即某瞬时内大气中各种气象要素&#xff08;如气温、气压、湿度、风、云、雾、雨、闪、雪、霜、雷、雹、霾等&#xff…

KEV美妆圈:7月美妆新品月刊(附下载)

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 护肤新品 •泊美胶原绿钻霜 •Abib鱼腥草舒缓胶原蛋白凝胶面膜 •资生堂时光琉璃凝时生机新眼霜 •薇诺娜修白瓶 •娇韵诗弹簧乳 • SK-11新版大红瓶面霜 •大水滴0点4K精华 •KANEBO卸妆清洁…

Git工具安装

Git 工具安装 1. 下载Git安装包2. 安装Git工具3. 简单的使用配置用户名 1. 下载Git安装包 打开官网 https://git-scm.com/downloads点击下载 2. 安装Git工具 右击以管理员身份运行 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9a99a73d54824800bc87db64f71f7602.png…

深度相机常见技术:深度相机的相位求解

1.1 深度相机概述 深度相机是近几年兴起的新技术&#xff0c;相比较传统的相机&#xff0c;深度相机在功能上添加了一个深度测量&#xff0c;从而更方便准确的感知周围的环境及变化。深度相机有很多的应用场景&#xff0c;在我们日常生活中有很多深度相机的影子。那它可以用来…

代码分析:waitpid的使用,非阻塞轮回检测技术

wait 函数 wait函数的作用是父进程调用&#xff0c;等待子进程退出&#xff0c;回收子进程的资源&#xff1b; #include<sys/types.h> #include<sys/wait.h> pid_t wait(int*status);返回值&#xff1a; 成功返回被等待进程pid&#xff0c;失败返回-1。 参数&…

LiveGBS流媒体平台GB/T28181常见问题-无法注册不上海康NVR摄像机自带物联网卡摄像头注册GB/T28181国标平台看不到设备的时候如何抓包及排查

LiveGBS无法注册不上海康NVR摄像机自带物联网卡摄像头注册GB/T28181国标平台看不到设备的时候如何抓包及排查 1、设备注册后查看不到1.1、是否是自带物联网卡的摄像头1.2、关闭萤石云1.3、防火墙排查1.4、端口排查1.5、IP地址排查1.6、设备TCP/IP配置排查1.7、设备多网卡排查1.…

10*1000【1】

7.20号 讲了蚂蚁的运行方式和关键技术&#xff1a; 数字技术实现了对金融的改革&#xff0c;让它更包容。当然也实现了消费方式的改变&#xff0c;是得以用户为中心。同时虚拟技术让个人也有了一个自己的小公司&#xff0c;在互联网上面的信息与信用都会被记录下来&#xff0…

人工智能的缺陷

首先从应用层面理解什么是人工智能&#xff0c;目前人工智能主流应用面包括&#xff1a;自然语言处理领域&#xff0c;代表为chatgpt&#xff0c;我们能用其进行日常交流&#xff0c;问题答疑&#xff0c;论文书写等。计算机视觉领域&#xff0c;代表为人脸识别&#xff0c;现在…

【计算机视觉|风格迁移】PP-GAN:使用GAN的地标提取器将韩国人像的风格转化为身份证照片

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;PP-GAN : Style Transfer from Korean Portraits to ID Photos Using Landmark Extractor with GAN 链接&#xff1a;[2306.13418] PP-GAN : Style Transfer from Korean Portraits to ID…

uniapp 微信小程序 分包

1、manifest.json内添加如图所示&#xff1a; "optimization" : {"subPackages" : true },2、在与pages同级上创建各个分包的文件夹 把需要分包的文件对应移入分包文件夹内 3、page.json内修改分包文件的路径 比如&#xff1a; {"path" : &qu…

EtherCAT转Profinet网关连接西门子PLC与凯福科技总线步进驱动器通讯

西门子S7-1200/1500系列的PLC&#xff0c;采用Profinet实时以太网通讯协议&#xff0c;需要连接带EtherCAT的通讯功能的伺服驱动器等设备&#xff0c;就必须进行通讯协议转换。捷米特JM-EIP-RTU系列的网关提供了&#xff0c;快速可行的解决方案 捷米特JM-ECTM-PN在PROFINET一侧…