在MFC下面实际演示CCriticalSection 的使用
Q:CCriticalSection是什么?
A:CCriticalSection是一种线程同步策略 或者说技术 或者方法 总之呢就是这么个意思。。。。
参考资料:
http://blog.csdn.net/akof1314/article/details/5773076
http://www.cnblogs.com/hlxs/archive/2013/03/31/2991752.html
http://baike.baidu.com/view/2471016.htm
第一步:打开VS2010 创建一个单文档MFC程序。并运行 确定创建过程OK
第二步:在视图类头文件里面添加头文件#include "afxmt.h"
并在视图类的实现文件里面实例化一个CCriticalSection对象。
特别说明这个对象不属于视图类,此处是将其定义为一个全局变量。
CCriticalSection Gsz_CriticalSection;
第三步:在视图里的实现文件里面 定义这两个函数。这两个函数带回会被指定为线程函数。这两个函数不是视图类的成员函数。
UINT MessageThread1(LPVOID pParam)
{ Gsz_CriticalSection.Lock(); LPTSTR pMessage = _T("Thread1 is started"); //AfxGetMainWnd函数获取MFC程序中的主框架类指针是一个常用作法CWnd *pMainWnd = AfxGetMainWnd(); ::MessageBox(pMainWnd->m_hWnd, pMessage, _T("Thread message"), MB_OK); Gsz_CriticalSection.Unlock(); return 0;
}
UINT MessageThread2(LPVOID pParam)
{ Gsz_CriticalSection.Lock(); LPTSTR pMessage = _T("Thread2 is started");
//AfxGetMainWnd函数获取MFC程序中的主框架类指针是一个常用作法
CWnd *pMainWnd = AfxGetMainWnd(); ::MessageBox(pMainWnd->m_hWnd, pMessage, _T("Thread message"), MB_OK); Gsz_CriticalSection.Unlock(); return 0; }
第四步:给视图类的添加 鼠标左键消息响应函数 函数编写如下:
注意这个需要点击如下所示,找个 左键响应函数。
void CTestGszView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
AfxBeginThread(MessageThread1, _T("Thread is started")); //启动线程1
AfxBeginThread(MessageThread2, _T("Thread is started")); //启动线程2
CView::OnLButtonDown(nFlags, point);
}
第五步:运行测试。
点击视图区域
出现下面的东东
转载于:https://www.cnblogs.com/wenluderen/p/4302936.html
在MFC下面实际演示CCriticalSection 的使用相关推荐
- VC++ MFC 多线程及线程同步(详细、全面总结!)
更多详情:http://blog.csdn.net/whyacinth/ VC++ MFC 多线程及线程同步 关键词: MFC 多线程及线程同步 ...
- Visual C++线程同步技术
线程同步的方式有: 临界区 管理事件内核对象 信号量内核对象 互斥内核对象 分别介绍如下: 使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作.更多的情况是一些线程进 ...
- 【MFC】CCriticalSection类在Release编译下调用Lock函数会报0xC0000008错误
[MFC]CCriticalSection类在Release编译下调用Lock函数会报错0xC0000008 问题描述 方法一 CRITICAL_SECTION代替CCriticalSection 方 ...
- 临界段类(CCriticalSection)——MFC
一.具体实现: _AFXMT_INLINE CCriticalSection::CCriticalSection() _AFXMT_INLINE CCriticalSection::operator ...
- 使用MFC的CCriticalSection类来实现操作临界区
使用MFC的CCriticalSection类来实现操作临界区 #include "stdafx.h" #include <windows.h> #include &l ...
- C++运算符重载-mfc演示
新建一个单文档工程:为工程添加一个Box类:下拉选择 Generic Class,一般类,非MFC类: 输入Box.h的代码:删掉默认生成的cpp文件中的构造和析构函数: // Box.h: inte ...
- MFC线程同步—— CCriticalSection类使用
多个线程访问临界区时,可以使用临界区对象.临界区对象是一个独占性共享资源,任一时刻只有一个线程可以拥有临界区.拥有临界区的线程可以访问被保护起来的资源或代码段,其他希望进入临界区的线程将被挂起等待,直 ...
- VC++环境添加一般类的方法、使用MFC演示基本C++成员变量和成员函数
Win7, VC6:版本不同略有差别:自己在菜单里面找:新建一个单文档工程:名为classdemo1: 选择如下菜单: 弹出对话框:类的类型下拉选中一般类:输入类名:自己生成文件名:没有基类: 添加之 ...
- mfc对话框ok没效果_利用PS制作逼真双重曝光效果案例演示,合成紫色城市建筑风格海报图片...
PS合成得好,那场景海报图制作就轻松了,我们通常在欣赏案例作品是发现不少大气的城市建筑风格的海报图片,是怎么样制作合成的呢,今天我们来分享PS制作逼真双重曝光效果的海报教程.摄影时,利用多重曝光,可以 ...
最新文章
- CentOS 6.7 RPM安装MySQL
- PHP课程20161114
- curl请求本地域名问题
- Android 顶部切换实现(二)
- 入职地府后我成了人生赢家_拿年终奖前跳槽,你才是赢家
- freecplus框架-MySQL数据库操作
- ecshop二次开发 给商品添加自定义字段【包含我自己进一步的开发实例详解】
- maven缺失ojdbc6解决方案 :Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错
- 原在一个tableView上应用不同类型的DTAttributedTextCell
- idea上传代码到github (图文并茂)
- ASO关键词覆盖怎么做?要做到多少?怎么提升aso关键词覆盖率
- [转]中国古代兵事纵横谈[强文]
- mysql如何创建用户代码_Mysql 创建用户 受权_mysql
- JS时间的计算,剩余时间的计算
- kobo glo原系统设置
- [HEOI 2013 day2] 钙铁锌硒维生素 (线性代数,二分图匹配)
- 《西游降魔录》模块学习笔记
- CSP-J2022入门组二轮补赛试题(山东)T2:宴会
- c语言动态与静态分配内存空间的区别
- 搭建Prometheus监控报警