首页 > 其他分享 >滴水 2.27 --事件

滴水 2.27 --事件

时间:2023-02-27 14:13:02浏览次数:34  
标签:-- 滴水 szBuffer 互斥 线程 事件 NULL 2.27 hThread

image
第二个参数 false会把已通知改为未通知 true 需要自己动手改为已通知
第二个参数 false会把已通知改为未通知

点击查看代码
	4、线程控制实验:只读形式的线程控制				
					
	HANDLE g_hEvent;				
					
	HWND hEdit1;				
	HWND hEdit2;				
	HWND hEdit3;				
	HWND hEdit4;				
	HANDLE hThread1;				
	HANDLE hThread2;				
	HANDLE hThread3;				
	HANDLE hThread4;				
					
	DWORD WINAPI ThreadProc1(LPVOID lpParameter)				
	{				
		//创建事件			
		//默认安全属性  手动设置未通知状态(TRUE)  初始状态未通知 没有名字 			
		g_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);			
		HANDLE hThread[3];			
		//创建3个线程			
		hThread[0] = ::CreateThread(NULL, 0, ThreadProc2, NULL, 0, NULL);			
		hThread[1] = ::CreateThread(NULL, 0, ThreadProc3, NULL, 0, NULL);			
		hThread[2] = ::CreateThread(NULL, 0, ThreadProc4, NULL, 0, NULL);			
					
		//设置文本框的值			
		SetWindowText(hEdit1,"1000");			
					
		//设置事件为已通知			
		SetEvent(g_hEvent);			
					
		//等待线程结束 销毁内核对象			
		WaitForMultipleObjects(3, hThread, TRUE, INFINITE);  			
		CloseHandle(hThread[0]);  			
		CloseHandle(hThread[1]);			
		CloseHandle(hThread[2]);			
		CloseHandle(g_hEvent);  			
					
		return 0;			
	}				
					
	DWORD WINAPI ThreadProc2(LPVOID lpParameter)				
	{				
		TCHAR szBuffer[10] = {0};			
					
		//当事件变成已通知时 			
		WaitForSingleObject(g_hEvent, INFINITE);			
					
		//读取内容			
		GetWindowText(hEdit1,szBuffer,10);			
					
		SetWindowText(hEdit2,szBuffer);			
					
		return 0;			
	}				
	DWORD WINAPI ThreadProc3(LPVOID lpParameter)				
	{				
		TCHAR szBuffer[10] = {0};			
					
		//当事件变成已通知时 			
		WaitForSingleObject(g_hEvent, INFINITE);			
					
		//读取内容			
		GetWindowText(hEdit1,szBuffer,10);			
					
		SetWindowText(hEdit3,szBuffer);			
					
		return 0;			
	}				
	DWORD WINAPI ThreadProc4(LPVOID lpParameter)				
	{				
		TCHAR szBuffer[10] = {0};			
					
		//当事件变成已通知时 			
		WaitForSingleObject(g_hEvent, INFINITE);			
					
		//读取内容			
		GetWindowText(hEdit1,szBuffer,10);			
					
		SetWindowText(hEdit4,szBuffer);			
					
		return 0;			
	}				


互斥,科学词语,拼音是hù chì,意思是指互相排斥的行为或事例。 事件A与事件B在任何一次试验中都不会同时发生,则称事件A与事件B互斥。事件A和B的交集为空,A与B就是互斥事件,也叫互不相容事件,也可叙述为不可能同时发生的事件。如A∩B为不可能事件(A∩B=Φ),那么称事件A与事件B互斥,其含义是事件A与事件B在任何一次试验中不会同时发生。 互斥事件定义中事件A与事件B不可能同时发生是指若事件A发生,事件B就不发生或者事件B发生,事件A就不发生。例如:粉笔盒里有3支红粉笔,2支绿粉笔,1支黄粉笔。现从中任取1支,记事件A为取得红粉笔,记事件B为取得绿粉笔,则A与B不能同时发生,即A与B是互斥事件。

线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多,临界区对象就是其中一种。

线程互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

互斥
image

image

标签:--,滴水,szBuffer,互斥,线程,事件,NULL,2.27,hThread
From: https://www.cnblogs.com/Agtw/p/17159452.html

相关文章

  • thinkphp6开发cms项目之安装tp框架
    1.安装thinkphp6框架:composercreate-projecttopthink/thinktp需要安装的扩展:composerrequiretopthink/think-multi-app//多应用composerrequiretopthink/th......
  • loguru日志模块使用
    loguru日志模块使用  相比于logging模块,loguru模块使用起来更方便,并且可以根据不同日志级别,进行不同颜色输出一、安装pipinstallloguru二、基本使用代码......
  • dokuwik将编辑器修改为可视化
    ​ 图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.j......
  • getUserInfo和getUserProfile被废弃
    之前得知获取用户头像和昵称的两个接口getUserInfo和getUserProfile被废弃了,于是我就想深入探究一下。 一直抱有一个疑问,为啥有getUserInfo和getUserProfile两个接口?经......
  • OSCP考试Hackthebox靶机推荐
    Pain:Pain是一台基于Linux的靶机,难度级别为中等,涵盖了许多常见的漏洞类型和渗透测试技术。这台靶机需要进行横向渗透,涉及到一些密码破解和提权技术。Legacy:Legacy是一......
  • 模块化规范
    一、参考资料:1、介绍模块化发展的历程(opensnewwindow)2、各模块化规范思维导图相关问题1、模块化的作用抽取公共代码、隔离作用域、依赖管理2、模块化历史无模块......
  • 直播软件搭建,输入框回车以后自动刷新页面
     直播软件搭建,输入框回车以后自动刷新页面可以在标签上添加@submit.native.prevent。 <el-formlabel-position="top"size="mini":inline="true":disabled="disab......
  • Mac 配置SSH公钥
    cd/进入主目录查看.ssh文件,是否存在公私钥,参考:链接https://www.jianshu.com/p/1bdae85fcf7bhttp://events.jianshu.io/p/54f8c11aa7d9......
  • jeecg-boot点击菜单时,在新窗口打开一个新页面
    1、’首先修改router.config.js文件,在要打开的页面路径写在基础路由constantRouterMap函数中,我这里的例子是新的聊天室在新的页面窗口打开  2、修改src/components/menu/C......
  • 基于Jeecgboot前后端分离的流程管理平台演示系统安装(四)
    五、前端的jenkins发布配置 其中:ProvideNode&npmbin/foldertoPATH 是指前端的编译的工具这里我们用nodejs12.6.0,也可以根据自己需要安装新的版本下面两个采用默认......