【免杀前置课——Windows编程】十三、事件与信号量——事件与互斥体区别、操纵信号量实现游戏多开访问控制(附代码)
创始人
2024-03-02 12:10:26
0

事件

事件可以完全控制,其他无法控制线程的执行顺序,但是事件对象可以做到。
***事件(Event)***是在线程同步中最常使用的一种同步对象,事件包含一个使用计数,一个是用来表示自动重置/手动重置的布尔值,另一个是表示事件有没有触发的布尔值。
事件对象有两种状态: 1、手动状态。2、自动状态
手动状态事件对象的激发态和非激发态是由我们来控制,自动状态与互斥体类似。
在这里插入图片描述

事件与互斥体区别

事件对象没有拥有者的概念,谁都可以操作事件对象的状态。事件可以控制线程的执行顺序。
手动状态事件对象的激发态和非激发态是由我们来控制,自动状态与互斥体类似。
在使用正常线程创建调用回调函数时,线程的执行顺序不一定会按线程创建的顺序执行。

#include
#includeLONG g_count;
HANDLE hEvent;
DWORD WINAPI myThreadProc1(_In_ LPVOID lpParameter
)
{printf("线程1执行了\n");return 0;
}DWORD WINAPI myThreadProc2(_In_ LPVOID lpParameter
)
{printf("线程2执行了\n");return 0;
}DWORD WINAPI myThreadProc3(_In_ LPVOID lpParameter
)
{printf("线程3执行了\n");return 0;
}int main()
{//hEvent = CreateEventW(NULL, FALSE, TRUE, L"dsd");HANDLE hThread1 = CreateThread(0, 0,  myThreadProc1, 0, 0,0);HANDLE hThread2 = CreateThread(0, 0,  myThreadProc2, 0, 0,0);HANDLE hThread3 = CreateThread(0, 0,  myThreadProc3, 0, 0,0);WaitForSingleObject(hThread1, -1);WaitForSingleObject(hThread2, -2);printf("%d\n", g_count);CloseHandle(hThread1);CloseHandle(hThread2);return 0;
}

在这里插入图片描述
而我们如果使用Event事件就可以对线程的执行顺序进行实现。

信号量

在这里插入图片描述
信号量也没有拥有者的概念,但是他有数量
信号量有一个当前信号数,只要这个数不为0,信号量就处于激发态。
当有线程调用WaitForSingle0bject后,信号数减1,如果不为0的话,再有线程调用
WaitForSingleObject.会继续上一把锁。相反调用ReleaseSemaphoore会将信号量加1,。如果信号量为0,当有线程调用WaitForSingleObject.时,线程会被阻塞。
使用场景:多开数量检测

操纵信号量实现游戏多开访问控制

#include
#includeint main() {HANDLE hSema = OpenSemaphoreW(EVENT_ALL_ACCESS, FALSE, L"dsd");//获取信号量句柄if (!hSema)//如果没有成功打开即创建信号量,仅当CreateSemaphore创建信号灯时才会成功{hSema = CreateSemaphore(NULL, 0, 3, L"dsd");//创建或打开信号灯对象,返回信号灯句柄}BOOL hSuccess = ReleaseSemaphore(hSema,1,NULL);//如果成功信号量加1则返回TRUE,否则返回FALSEif (!hSuccess) {MessageBox(0, L"程序打开数量不能超过三个",L"提示",MB_OK);CloseHandle(hSema);return 0;}system("pause");return 0;
}

在这里插入图片描述

相关内容

热门资讯

人大常委会|整改问题金额1.0... 新华社北京12月22日电 题:整改问题金额1.04万亿元 制定完善制度1090多项——2024年度审...
法援三十载·新规启新程 | 金... 概况 11月以来,金山区法律援助中心围绕“法援三十载·新规启新程”主题,联合11个街镇(高新区)法律...
轻信理财骗局损失8.8万元,起... 三湘都市报12月22日讯(文/视频 全媒体记者 虢灿)女子轻信网络投资理财骗局,被骗8.8万元,收款...
南玻A(000012)披露公司... 截至2025年12月22日收盘,南玻A(000012)报收于4.47元,较前一交易日上涨0.22%,...
恒兴新材(603276)披露修... 截至2025年12月22日收盘,恒兴新材(603276)报收于16.46元,较前一交易日下跌0.72...
个人信用修复政策重磅落地 12月22日,中国人民银行发布一次性信用修复政策:符合相关条件的逾期信息,将不会在个人信用报告中予以...
应对野生动物伤人,法律重申常识... 12月22日,生态环境法典草案三次审议稿提请十四届全国人大常委会第十九次会议审议。针对食草野生动物与...
原创 私... 西安雁塔警方通报查处一家提供“异性陪侍”的私人影院,经营者被刑拘,陪侍人员被行拘。这背后,为何处理结...
天玑科技及相关责任人因涉嫌串通... 12月22日,天玑科技(300245.SZ)发布公告,公司近期收到上海市虹口区人民检察院送达的《起诉...
「期刊文摘」 蔡昉:人工智能时... 蔡昉:人工智能时代的社会保障,理念更新与制度建设 期刊文摘 ★★★★★ 一、引言 人们惊叹于近年来人...