事件Event

本文展示了一个使用Windows API创建线程并通过事件进行同步的例子。两个线程共享一个票数资源,通过事件来协调彼此的工作,确保每次只有一个线程能够执行售票操作。


参考链接:

http://blog.youkuaiyun.com/morewindows/article/details/7445233


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

using namespace std;

int tickets = 100;
HANDLE g_hEvent;

DWORD WINAPI ThreadProc1(LPVOID lpParam);
DWORD WINAPI ThreadProc2(LPVOID lpParam);


int main()
{
	
	g_hEvent = CreateEvent(	NULL, 			// 安全控制,一般直接传入NULL。
							FALSE, 			// 确定事件是手动置位还是自动置位,传入TRUE表示手动置位,传入FALSE表示自动置位。
							FALSE, 			// 事件的初始状态,传入TRUE表示已触发。
							NULL);			// 事件的名称,传入NULL表示匿名事件。

	HANDLE handle1 = CreateThread(NULL, 0, ThreadProc1, NULL, 0, NULL);
	HANDLE handle2 = CreateThread(NULL, 0, ThreadProc2, NULL, 0, NULL);
		
	// 事件初始化为未触发状态,在创建两个线
	// 程后两个线程都停在WaitForSingleObject
	// 那里,需要SetEvent事件才能让WaitForSingleObject
	// 获取事件 
	SetEvent(g_hEvent);	
	
	while(1);
	
}


DWORD WINAPI ThreadProc1(LPVOID lpParam)
{
	while(TRUE)
	{
		WaitForSingleObject(g_hEvent, INFINITE);	// 事件初始化为自动置位,表示等到事件的时候就默认ResetEvent了事件 
		/*printf("ThreadProc1 get Event\n");
		ResetEvent(g_hEvent);	
		while(1);*/
		if(tickets > 0)
		{
			Sleep(1);
			cout << "Thread1 sell ticket:" << tickets-- << endl;
			SetEvent(g_hEvent);
		}
		else
		{
			SetEvent(g_hEvent);
			break;
		}
	}
	
	return 0;
}

DWORD WINAPI ThreadProc2(LPVOID lpParam)
{
	while(TRUE)
	{
		WaitForSingleObject(g_hEvent, INFINITE);
		/*printf("ThreadProc2 get Event\n");
		ResetEvent(g_hEvent);	
		while(1);*/
		if(tickets > 0)
		{
			Sleep(1);
			cout << "Thread2 sell ticket:" << tickets-- << endl;
			SetEvent(g_hEvent);
		}
		else
		{
			SetEvent(g_hEvent);
			break;
		}
	}
	
	return 0;
}



具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)内容概要:本文介绍了一个涵盖多个科研领域的综合性MATLAB仿真资源集合,重点聚焦于光伏发电系统中基于粒子群优化(PSO)算法的最大功率点追踪(MPPT)技术的Simulink仿真实现。文档还列举了多种MPPT方法(如P&O、增量电导法、神经网络、模糊逻辑控制等),并展示了该团队在电力系统、智能优化算法、机器学习、路径规划、无人机控制、信号处理等多个方向的技术服务能力与代码实现案例。整体内容以科研仿真为核心,提供大量可复现的Matlab/Simulink模型和优化算法应用实例。; 适合人群:具备一定电力电子、自动控制或新能源背景,熟悉MATLAB/Simulink环境,从事科研或工程仿真的研究生、科研人员及技术人员。; 使用场景及目标:①学习并实现光伏系统中基于粒子群算法的MPPT控制策略;②掌握多种智能优化算法在电力系统与自动化领域的建模与仿真方法;③获取可用于论文复现、项目开发和技术攻关的高质量仿真资源。; 阅读建议:建议结合提供的网盘资料,按照研究方向选取对应模块进行实践,重点关注Simulink模型结构与算法代码逻辑的结合,注重从原理到仿真实现的全过程理解,提升科研建模能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值