贵州做网站公司
贵州做网站公司~专业!靠谱!
10年网站模板开发经验,熟悉国内外开源网站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等网站程序,可为您提供网站建设,网站克隆,仿站,网页设计,网站制作,网站推广优化等服务。我们专注高端营销型网站,企业官网,集团官网,自适应网站,手机网站,网络营销,网站优化,网站服务器环境搭建以及托管运维等。为客户提供一站式网站解决方案!!!

windows线程 互斥锁CreateMutex、ReleaseMutex、CloseHandle

来源:网络转载 时间:2023-08-08 11:37:28

互斥
相关问题
多线程下代码或资源的共享使用。
互斥的使用
1.创建互斥
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes,//安全属性(废弃参数,置NULL)
BOOL bInitialOwner,//初始的拥有者TRUE/FALSE
LPCTSTR lpName //命名
);//创建成功返回互斥句柄
可等候的句柄,具备有信号和无信号的特点
bInitialOwner
TRUE-那个线程创建就那个线程具有互斥
FALSE-任何线程都不拥有它
特性:
a.独占性-在某个时间点上,只有一个线程拥有互斥,别的线程等待,除非这个线程扔掉后,别的线程才会拥有互斥
b.所有线程都没有互斥时,线程句柄有信号,如果有一个线程拥有互斥,线程句柄无信号
2.等候互斥
WaitFor… 互斥的等候遵循谁先等候谁先获取。
谁先等候,谁先获得互斥
3.释放互斥
BOOL Releasemutex(
HANDLE hMutex //互斥句柄
);
4.关闭互斥句柄
CloseHandle

错误示例代码(混乱)

#include <Windows.h> #include <stdio.h>DWORD CALLBACK myThreadProc1(LPVOID lpParam) {char* szText = (char*)lpParam;while(1){//printf("%s\n",szText);for(int i = 0; i < strlen(szText);i++){printf("%c",szText[i]);Sleep(150);}printf("\n");} } DWORD CALLBACK myThreadProc2(LPVOID lpParam) {char* szText = (char*)lpParam;while(1){//printf("%s\n",szText);for(int i = 0; i < strlen(szText);i++){printf("%c",szText[i]);Sleep(150);}printf("\n");} } int main() {char* szText1 = "***Thread1***";char* szText2 = "---Thread2---";DWORD myThreadId1 = 0;DWORD myThreadId2 = 0;HANDLE hThread1 = Createthread(NULL,0,myThreadProc1,szText1,0,&myThreadId1);HANDLE hThread2 = CreateThread(NULL,0,myThreadProc2,szText2,0,&myThreadId2);system("pause");return 0; } //正确的代码,加互斥锁 #include <Windows.h> #include <stdio.h> HANDLE g_hHandle; DWORD CALLBACK myThreadProc1(LPVOID lpParam) {char* szText = (char*)lpParam;while(1){WaitForSingleObject(g_hHandle,INFINITE);//printf("%s\n",szText);for(int i = 0; i < strlen(szText);i++){printf("%c",szText[i]);Sleep(150);}printf("\n");ReleaseMutex(g_hHandle);} } DWORD CALLBACK myThreadProc2(LPVOID lpParam) {char* szText = (char*)lpParam;while(1){WaitForSingleObject(g_hHandle,INFINITE);//printf("%s\n",szText);for(int i = 0; i < strlen(szText);i++){printf("%c",szText[i]);Sleep(150);}printf("\n");ReleaseMutex(g_hHandle);} } int main() {g_hHandle =CreateMutex(NULL,FALSE,NULL);char* szText1 = "***Thread1***";char* szText2 = "---Thread2---";DWORD myThreadId1 = 0;DWORD myThreadId2 = 0;HANDLE hThread1 = CreateThread(NULL,0,myThreadProc1,szText1,0,&myThreadId1);HANDLE hThread2 = CreateThread(NULL,0,myThreadProc2,szText2,0,&myThreadId2);system("pause");CloseHandle(g_hHandle);return 0; }


原子锁能解决的问题,互斥锁也能解决;
互斥锁能解决的问题,原子锁不能解决;
原子锁的效率要高很多,互斥锁比较慢。

标签:sem-

北京女装最好的商场?朝阳区外贸服装市场市场地址是北京市朝阳区雅宝路北斗星大厦,是一个常年批发市场。市场客户主要来自埃及、利比亚、俄罗斯、中东等国家,年销量80万件。目前市场主要销售男女半袖t恤,冬季运动服装,毛衣。大部分老外都是先下单,然后可靠的发货。动物园地区有世纪天乐服装批发市场、丁咚市场和金凯利得服装商场。北京儿研所的详细地址在那里?北京儿科研究所地址:北京市朝阳区雅宝路2号。首都儿科研究所...

韩币1千万等于多少钱?汇率转换10000000韩元= 57860元1元= 172.831韩元韩币1千万等于多少钱?1000万韩元,或1000万韩元= 57850.5177。韩币1千万等于多少钱?1韩元=0.0062,1000万韩元= 6.2万,以银行柜台成交价为准。14.1万元韩元合多少钱?按现行汇率计算1韩元=0.0059=168.8124韩元=829.32。数据仅供参考。二零一三年韩币一万四千...

怎么改文件系统?我想把FAT32改成NTFS的?可以通过以下进行转换,而不会删除硬盘上的内容:1.在命令提示符下键入conv:。其中driv: NTFS带空格;2000/XP自带小program-Convert.exe,将FAT或FAT32分区转换为NTFS分区。它不仅快速易用,而且可以保留这个分区上的原始数据。3.在win running窗口中,输入 "转换C:/fs: NTFS "如果你想改...

  随着互联网用户数量激增,很多常见顶级域名的优质资源几乎使用殆尽,人们不得不寻找一些“替代品”,.cf 域名作为中非共和国顶级域名后缀,近些年比较受我国用户的欢迎,因为该域名可以理解为财富、超凡等意思,同时它还和现在火爆网络的一款射击游戏同名,在国内有着很高的流量属性,也就具备了推广价值。今天就为大家分享.cf 域名注册教程,并介绍国内知名的域名注册服务商。 &em...

检测网站是否存在漏洞的方法:可以借助漏洞扫描工具来检测,例如使用w3af工具扫描网站漏洞:1.安装并运行工具。2.在Profiles下,选择一个扫描规则。3.例如选择全面审计,则是选择Profiles下的“full_audit”。4.然后在“Target”下输入要扫描的网站地址,点击“Start”扫描即可。...

  网站建设费用清单,网站建设费用包括哪些部分?所以总起來的话,我们可以把网站建设花费测算的更详尽一些,就是这个花费将会会包括什么开支项,可以协助大家了解不一样企业的建站花费开支状况,网站建设自动化程度不断提高,现在主流网站使用php。费用包括人力,服务器,网站软件,域名,广告等。那么下面就由贵州做网站公司小编和大家讲一讲网站建设费用明细有哪些。   一、网站软件   php是20...

TOP