MFC_互斥对象_打印字符串_2线程_同步

2023-11-05

#include <afxmt.h>
#include <stdio.h>
DWORD WINAPI myfun1(LPVOID lpParameter);//声明线程函数
DWORD WINAPI myfun2(LPVOID lpParameter);
CMutex hmutex(NULL,FALSE,NULL);				//定义全局互斥对象
int a=0;										//定义全局变量a
int main()
{	
	HANDLE h1,h2;									//定义线程句柄
	h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL);	//创建线程1
	printf("使用CMutex 类实现线程同步\r\n");
	printf("线程1开始运行!\r\n");
	h2=::CreateThread(NULL,0,myfun2,NULL,0,NULL);	//创建线程2
	printf("线程2开始运行!\r\n");
	::CloseHandle(h1);								//关闭线程句柄对象
	::CloseHandle(h2);
	::Sleep(100000);									//程序睡眠10秒
	return 0;
}
DWORD WINAPI myfun1(LPVOID lpParameter) 		//线程函数1
{
	while(1)
	{
		hmutex.Lock(INFINITE);						//锁定互斥对象
		if(a<10000)
		{
			a+=1;											//变量自加
			::Sleep(1000);									//线程睡眠1秒
			printf("线程1:%d\r\n",a);
			hmutex.Unlock();							//释放互斥对象
		}
		else
		{
			hmutex.Unlock();								//释放互斥对象
			break;										//跳出循环
		}
	}
    return 0;	
}
DWORD WINAPI myfun2(LPVOID lpParameter) 		//线程函数2
{
	while(1)
	{
		hmutex.Lock(INFINITE);						//锁定互斥对象
		if(a<10000)
		{
			a+=1;
			::Sleep(1000);
			printf("线程2:%d\r\n",a);					//输出变量
			hmutex.Unlock();							//释放互斥对象
		}
		else
		{	
			hmutex.Unlock();							//释放互斥对象
			break;										//跳出循环
		}
	}
    return 0;									//线程正常退出
}

 

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

MFC_互斥对象_打印字符串_2线程_同步 的相关文章

  • 微信直接打开公众号页面 公众号uin_base64直接获取(不用管理员账号 直接获取)

    在网上看了获取微信公众号链接直接跳转的方法 但是需要获取uin base64这个参数 而且都是要管理员登录微信公众平台才行 但是很多情况下我们不是公众号的管理员 所以f12获取参数根本不可能 后来经他人提醒 看到了用这种类似的方法 不过比这
  • JVXETable使用入门介绍

  • 最大熵模型学习笔记

    最大熵模型 最大熵模型按模型分类 算是机器学习中的概率模型 其原理来自最大熵原理 最大熵原理认为 学习概率模型时 在所有可能的模型概率中 熵最大的模型是最好的模型 通常用约束条件来确定概率模型的集合 所以 最大熵原理也可以表述为在满足约束条
  • 以太坊私链的搭建和智能合约的部署

    参考文献 https mshk top 2017 11 truffle 4 0 geth 1 7 2 testrpc http blog lixf cn essay 2016 09 02 ethereum 1 http blog csdn
  • Patchwork&Patchwork++ 激光雷达点云地面分割(附代码)

    先从 patchwork 开始 patchwork分为三部分 CZM R GPF和GLE CZM 同心区模型 可理解为不均匀或多分辨率的区域分割模型 大多数基于多平面的方法都基于假设 可观测世界可能不是平坦的 因此 地平面估计应该被推倒 通
  • 设置超链接的按钮效果(向下按)

    设置超链接像按钮一样 并且当鼠标移到一个超链接上是 会有向下按的凹陷效果 通常是利用a hover 将链接向下 向右各移动一个像素即可 a href 首页 a a href 团购 a a href 女装 a a href 男装 a
  • 阿里线下一面

    1 安卓内存分配 跟内存回收对应 2 listview的优化策略 3 view事件分发 4 view渲染过程 没有深度
  • [docker]十一、docker nfs服务

    目录 1 Swarm中使用Volume和NFS服务 1 1 为什么需要nfs服务器 nfs是什么 nfs解决了什么问题 2 布置一台nfs服务器 2 1 客户机上能否有写的权限要看两种权限 2 2 sync 同步 和async 异步 2 3
  • CCS->Project导入不了新的CCS工程文件(invalid project description)

    当你开发DSP工程的时候 涉及到工程移植或者模板工程代码修改 CCS软件会提示project和workplace重合 面对这个问题 解决方法 改变打开workplace的路径 替换成除需要打开工程的其他文件夹目录 然后在open proje
  • SAP如何控制采购价格不显示(适用ME23N、ME2L、ME2M、ME2K、ME2J、ME2C、ME2B、ME2N等)

    适用场景 需要给非采购 财务岗位显示采购凭证 但不得查看到价格 针对上述事务 可不作任何修改 通过角色 权限进行细致控制 即可达到采购价格不显示的效果 一 赋给目标用户的权限最小化 仅赋以下 必要权限 权限对象 字段 值 说明 备注 S T
  • 区块链技术之P2P网络(一)

    与传统的Client Server网络模式相比 P2P网络所有节点平等 数据互相传输 P2P 英文全称 Peer to peernetworking 简称P2P 也称为对等网络 即对等计算机网络 是一种在对等者 Peer 之间分配任务和工作
  • gperftools TcMalloc 内存池的使用

    下载地址 https github com gperftools gperftools vs2013可以选择2 7编译 更高版本需要更高版本的vs 指定版本下载路径如下图 lib dll的使用方式 在导入库中设置dll 在强制符号引用中设置
  • linux docker 使用centos镜像创建容器,内部搭建宝塔面板过程

    宿主机指令 创建启动容器 docker run itd name bt host p 7080 80 p 7022 22 p 7021 21 p 7443 443 p 7888 8888 p 7306 3306 p 7379 6379 p
  • 网络信号_网络信号总是连接超时?手机信号增强器值得你入手

    人人都离不开网络的今天 你有没有遇到这样的情况 刷视频三分钟 转圈1小时 网络延迟 玩游戏只能送 人头 网速不给力 秒杀购物手慢无 那么问题来了 如何才能get到又快又稳定的网络 随着移动4G网络信号的普及 很多人都感受过4G带来快速的上网
  • 前端jQuery获取当前日期及前一周或者后一周的日期

    有的时候难免会有要求前或者后几天日期的需求 写在后端又比较麻烦 所以就请我的前端同事帮我写了一个小功能 可以获得当前及前一段时间或者后一段时间的小模块 在这里跟大家分享一下 下面是代码 function getBeforeDate n n为
  • element-ui子弹窗出现遮罩层无法点击

    问题 最近在写一个弹窗组件 弹窗组件里面又嵌套着一个弹窗 当打开这个子弹窗时发现会出现一个遮罩层导致无法点击 解决方法 需要在子弹窗上增加一个append to body属性 总结 平时应该多看看官方文档 以免掉坑 关于弹窗Dialog组件
  • mybatis-plus @Select注解的坑 The method‘s class, org.apache.ibatis.annotations.Select, is available from

    运行报错信息如下 Error starting ApplicationContext To display the conditions report re run your application with debug enabled t
  • Github常用命令大全

    1 Git简介 Git是用C语言开发的分布版本控制系统 版本控制系统可以保留一个文件集合的历史记录 并能回滚到另外一个状态 历史记录状态 对于任何一个文件 在 Git 内都只有三种状态 已提交 committed 已修改 modified
  • Linux并发与同步

    典型的UNIX系统都支持一个进程创建多个线程 thread 在Linux进程基础中提到 Linux以进程为单位组织操作 Linux中的线程也都基于进程 尽管实现方式有异于其它的UNIX系统 但Linux的多线程在逻辑和使用上与真正的多线程并

随机推荐