多线程之互斥锁(By C++)
首先贴一段win32API实现的多线程的代码,使用CreateThread实现,如果不要传参数,就把第四个参数设为NULL
#include<Windows.h>
#include<iostream>
using namespace std; //有参数
DWORD WINAPI MyThread_lpParamter(LPVOID lpParamter)
{
string *lp = (string *)lpParamter;
while ()
{ cout << "MyThread1 Runing :"<<lp->c_str()<<""<< endl;
Sleep();
}
} int main()
{
string parameter = "我是参数";
HANDLE hThread2 = CreateThread(NULL, , MyThread_lpParamter, ¶meter, , NULL);
CloseHandle(hThread2);
while();
return ;
}
下面是执行的结果
aaarticlea/png;base64,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" alt="" />
互斥锁:
当一个全局的共有资源被多个线程同时调用会出现意想不到的问题,比如你去银行取出所有钱,同时又转所有钱到支付宝,如果这两块同时执行,就有可能转出双倍的钱,这是不允许的。
这时候要使用的这个线程需要将这个资源(取钱这个过程)先“锁”起来,然后用好之后再解锁,这期间别的线程就无法使用了,其他线程的也是类似的过程。
#include<Windows.h>
#include<iostream>
using namespace std;
//互斥锁
HANDLE hMutex1;
int flag; DWORD WINAPI MyThread2(LPVOID lpParamter)
{
while ()
{
//没上锁的话就自己锁上,否则等着
WaitForSingleObject(hMutex1,INFINITE);
flag=!flag;
cout << "MyThread1 Runing :"<<"线程2"<<" "<<flag<< endl;
Sleep();
//解锁
ReleaseMutex(hMutex1);
}
}
DWORD WINAPI MyThread1(LPVOID lpParamter)
{
while ()
{
WaitForSingleObject(hMutex1,INFINITE);
flag=!flag;
cout << "MyThread2 Runing"<<"线程1" <<" "<<flag<< endl;
Sleep();
ReleaseMutex(hMutex1); }
} int main()
{
//创建一个锁
hMutex1 =CreateMutex(NULL,FALSE,NULL);
HANDLE hThread1 = CreateThread(NULL, , MyThread1, NULL, , NULL);
CloseHandle(hThread1); HANDLE hThread2 = CreateThread(NULL, , MyThread2, NULL, , NULL);
CloseHandle(hThread2);
while();
return ;
}
可以看到结果,就算线程1延时的时间非常短,但是由于线程2执行的时候,就被锁住了,线程1就处于等待。结果就是线程1和线程2会交替执行
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAApcAAAEnCAIAAABzLP8uAAAgAElEQVR4nOy9d3Ac153vO/jrvXr3Vb17675bayt6g722ZUl3bWnf7rUoBjBBTKJpU5Itr+SVGJAmYXLOOWNyxESEATDIg4zJAYGZFJNE0cwiqWT7rrz3Vb33x+lu9EzPDACSkri7+Na3UDM9p3t6Ej79+53fOQeXyWTS6XQqlUomk4l1Pa5iMBjDozOI9zENiUTC2zft7ZvexzSMrl3fwDl/r1VS8W7Z9kQi8e6771Y7iMEZ/unPNxqcYfQNtLEby7ag71a7veJxfvrzjRX3RW9f8YCrOdsax6l9/FU+3QMcfzU3VvSj/nKta13rSiSTyVQqhevv7+/r64tGoz09Pd3relzV1NTk7Ygg3t7M7+7uVtsjantkezPft3Z9A+f81LuUMldr+atf/araQ3yF8Scv/QNfYUTfQO6iXbax4t3aW8q2lzWuuFfZ9mrHKTvm6p93ledZdkorNl7N82KPgL6B/Thq++v5iq1rXf+h1dPT09vbizMajQaDQafTabVazboeV7355ptiiQrx/3izUaPRtPGUbTzl/3izUbJ2fYuv5Tuvv1u2Zfv27dUaN5IY6/534K/5O7Wudf1HlFar1ev1uO+t63HVs7CeeeaZZ5555ulnnnn66WeeevqZp55+5smnn3nyKdhPP/MkvP3pZ1bQsxg94nP+3veeffZ7zz777DOwn36mgp+BXPkEn3n2Wfj1Pv3UU08/+dRTTzz51HefePK7Tzz5nSee/M53n/zOd594rPwX333iLypsf/I7T0D+LuzvLL+ER/UqnsR4xcarejl/8Z0n/uI730X5ib/4DvZllr/A7z7x5HefeOq7Tzz13SefegL2k089/eRTTz/19NNPP/3M088g39JnK/jr/Xqua13/DoX7w9r1JSzslm9e4Nkf4FU8pB7Jy/+ipj7//PPPP//8s88+/+yzzz797LNPP/30/qef3r//6b37n967f//uvQq+B3z//r379+/du3fv3r379+/fh2+jt3xNQp7lLvDde5/cvYty2V3Yn3zyySd30frkk7uffPLJnTuf3L5z59btO7du37556/aNm7cQX7956/qNW9dv3CzztTJfv3ntesmWqrtgWl67fvPa9RsPZ8z5IE/0sEfGPFHJMbEv8xbq3bt949btG7du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" alt="" />
多进程互斥:
如果某个文件不允许被多个进程用时使用,这时候也可以采用进程间互斥。当一个进程创建一个进程后创建一个锁,第二个进程使用OpenMutex获取第一个进程创建的互斥锁的句柄。
第一个进程:
#include<Windows.h>
#include<iostream>
using namespace std;
//互斥锁
HANDLE hMutex1;
int flag;
DWORD WINAPI MyThread(LPVOID lpParamter)
{
while ()
{
WaitForSingleObject(hMutex1,INFINITE);
flag=!flag;
cout << "MyThread2 Runing"<<"进程1" <<" "<<flag<< endl;
Sleep();
//此时锁1被锁,无法在下面解锁2
ReleaseMutex(hMutex1); }
}
int main()
{
//创建一个锁
hMutex1 =CreateMutex(NULL,false,LPCWSTR("hMutex1"));
HANDLE hThread1 = CreateThread(NULL, , MyThread, NULL, , NULL);
CloseHandle(hThread1);
while();
return ;
}
第二个进程:
#include<Windows.h>
#include<iostream>
using namespace std;
//互斥锁
HANDLE hMutex1;
int flag;
//无参数
DWORD WINAPI MyThread(LPVOID lpParamter)
{
while ()
{
WaitForSingleObject(hMutex1,INFINITE);
flag=!flag;
cout << "MyThread2 Runing"<<"进程2" <<" "<<flag<< endl;
Sleep();
ReleaseMutex(hMutex1);
}
} int main()
{
//打开
hMutex1 = OpenMutex(MUTEX_ALL_ACCESS,false,LPCWSTR("hMutex1"));
if(hMutex1!=NULL)
cout<<"锁打开成功"<<endl;
HANDLE hThread1 = CreateThread(NULL, , MyThread, NULL, , NULL);
CloseHandle(hThread1);
while();
return ;
}
结果可以看到,之运行进程1,消息打印的非常快,但是把进程2打开之后,进程1的消息打印速度就跟进程2变得一样了。
死锁:
何为死锁,举个例子,两个柜子,两个锁,两把钥匙,把两把钥匙放进另外一个柜子,然后锁上,结果呢,两个都打不开了。在程序内部,这样就会导致两个进程死掉。
看例子
#include<Windows.h>
#include<iostream>
using namespace std;
//互斥锁
HANDLE hMutex1;
HANDLE hMutex2;
int flag;
DWORD WINAPI MyThread2(LPVOID lpParamter)
{
while ()
{
WaitForSingleObject(hMutex1,INFINITE);
flag=!flag;
cout << "MyThread1 Runing :"<<"线程1"<<" "<<flag<< endl;
Sleep(); //此时锁2被锁,无法在下面解锁1
WaitForSingleObject(hMutex2,INFINITE);
ReleaseMutex(hMutex2);
ReleaseMutex(hMutex1);
}
}
DWORD WINAPI MyThread1(LPVOID lpParamter)
{
while ()
{
WaitForSingleObject(hMutex2,INFINITE);
flag=!flag;
cout << "MyThread2 Runing"<<"线程1" <<" "<<flag<< endl;
Sleep(); //此时锁1被锁,无法在下面解锁2
WaitForSingleObject(hMutex1,INFINITE);
ReleaseMutex(hMutex1);
ReleaseMutex(hMutex2); }
} int main()
{
//创建一个锁
hMutex1 =CreateMutex(NULL,FALSE,NULL);
hMutex2 =CreateMutex(NULL,FALSE,NULL);
HANDLE hThread1 = CreateThread(NULL, , MyThread1, NULL, , NULL);
CloseHandle(hThread1); HANDLE hThread2 = CreateThread(NULL, , MyThread2,NULL, , NULL);
CloseHandle(hThread2);
while();
return ;
}
结果呢就是,两个线程执行打印一次就死掉了
aaarticlea/png;base64,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" alt="" width="637" height="232" />
多线程之互斥锁(By C++)的更多相关文章
- 多线程、互斥锁、异步、GIL
多线程-threading python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便被使用 from threading imp ...
- C++11 多线程同步 互斥锁 条件变量
在多线程程序中,线程同步(多个线程访问一个资源保证顺序)是一个非常重要的问题,Linux下常见的线程同步的方法有下面几种: 互斥锁 条件变量 信号量 这篇博客只介绍互斥量和条件变量的使用. 互斥锁和条 ...
- (转)Linux C 多线程编程----互斥锁与条件变量
转:http://blog.csdn.net/xing_hao/article/details/6626223 一.互斥锁 互斥量从本质上说就是一把锁, 提供对共享资源的保护访问. 1. 初始化: 在 ...
- Java多线程之互斥锁Syncharnized
public class Bank { private int money; private String name; public Bank(String name, int money) { th ...
- c++多线程编程互斥锁初步
上一次讲述了多线程编程,但是由于线程是共享内存空间和资源的,这就导致:在使用多线程的时候,对于共享资源的控制要做的很好.先上程序: #include <iostream> #include ...
- Python多线程同步互斥锁
接着上篇多线程继续讲,上篇最后的多线程共享全局变量对变量的处理值出错在本文中给出解决方案. 出现这个情况的原因是在python解释器中GIL全局解释器锁. GIL:全局解释器锁,每个线程在执行的过程都 ...
- java 多线程 读写互斥锁ReentrantReadWriteLock:读读不互斥,读写互斥,写写互斥
ReentrantReadWriteLock: 类ReentrantLock具有相互互斥的排他效果,也就是说,同一时间,只有一个线程执行lock()方法后面的任务.这样做虽然可以解决问题,但是效率非常 ...
- C++多线程之互斥锁和超时锁
#include<iostream> #include<thread> #include<mutex> using namespace std; mutex mu; ...
- threading.local()、多线程里全局变量锁
这个人的系列文章值得一读:http://blog.51cto.com/suhaozhi/category3.html/p2,不过这个系列总共15偏,Python并发入门,有很多文字描述错误,有些道理也 ...
随机推荐
- 使用ICSharpCode.SharpZipLib.Zip类库解压zip文件的方法
public static bool ZipExtractFile(string zipFilePath,string targetPath) { FastZip fastZip = new Fast ...
- php.h: No such file or directory
建立一个php的include路径到/usr/include的软连接就好了 ln -s /usr/include/php-zts/* /usr/include/
- Python中两种处理错误方法的比较
我所说的处理错误的方法,其实是try:,except和raise这两种. 首先抛出一个实例, dictt={'a':1,'b':2,'c':3} try: if dictt['d']>1: #字 ...
- 常用ubuntu命令
解压缩.7z sudo apt-get install p7zip-full 7z x PACKAGE.7z 查看图片 eog A.png 关闭打开触摸板(触点) sudo rmmod psmouse ...
- 夏夏的php开发笔记开写啦
主要写一些平时drupal.dedecms.帝国cms.wordpress等php程序开发过程中遇到的问题,以及解决的过程,记录夏夏的成长,把握契机,创造未来
- JavaScript的模块化之AMD&CMD规范
前端开发常常会遇到的问题: 1.恼人的命名冲突: 2.繁琐的文件依赖: 模块化开发的优势: 1.解决命名冲突和依赖管理: 2.模块的版本管理: 3.提高代码的可维护性: 4.前端性能优化: JavaS ...
- 复习(1)【Maven】
终于开始复习旧知识了,有输入必然要有输出.输入和输出之间的内化过程尤为重要,在复习的同时,真正把学到的东西积淀下来,加深理解. Maven项目概念与配置 Maven是一个项目管理和综合工具.Maven ...
- kernel 4.4.12 EETI eGTouch 电容屏驱动移植
kernel 4.4.12 EETI eGTouch 电容屏驱动移植: 在make menuconfig 里面添加如下选项: 添加通过事件上报接口节点: Device Drivers ---> ...
- Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
http://www.cnblogs.com/zhongweiv/archive/2013/01/07/https.html 配置环境 了解HTTPS 配置CA证书服务器 新建示例网站并发布在IIS ...
- vs2012 安装entity framework
1.安装vs2012 2.打开vs2012的工具下的扩展工具 3.搜索nuget,没安装的直接在线安装 4.安装好了NuGet,程序包管理器控制台 5.执行命令Install-Package Enti ...