在MFC下面实际演示CCriticalSection 的使用

在MFC下面实际演示CCriticalSection 的使用Q:CCriticalSection是什么?A:CCriticalSection是一种线程同步策略或者说技术或者方法总之呢就是这么个意思。。。。参考资料:http://blog.csdn.ne

大家好,又见面了,我是你们的朋友全栈君。

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;
}

第四步:给视图类的添加 鼠标左键消息响应函数 函数编写如下:

注意这个需要点击如下所示,找个 左键响应函数。

 <span role="heading" aria-level="2">在MFC下面实际演示CCriticalSection 的使用

<span role="heading" aria-level="2">在MFC下面实际演示CCriticalSection 的使用

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);
}

第五步:运行测试。

 点击视图区域

出现下面的东东

<span role="heading" aria-level="2">在MFC下面实际演示CCriticalSection 的使用

<span role="heading" aria-level="2">在MFC下面实际演示CCriticalSection 的使用

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154895.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Spring AOP原理「建议收藏」

    Spring AOP原理「建议收藏」Spring AOP原理

    2022年4月25日
  • AppSettings和ConnectionStrings的使用。[通俗易懂]

    AppSettings和ConnectionStrings的使用。[通俗易懂]引用:http://www.cnblogs.com/mikemao/archive/2009/02/02/1382694.htmlAppSettings是ASP.NET1.1时期用的,在.NETFramework2.0中,新增了ConnectionStrings.1.ConnectionStrings的使用<connectionS…

    2022年5月21日
  • Cinemachine 文档[通俗易懂]

    Cinemachine 文档[通俗易懂]https://docs.unity.cn/Packages/com.unity.cinemachine@2.8/manual/index.html

    2022年5月20日
  • 编译树莓派Linux内核[通俗易懂]

    编译树莓派Linux内核[通俗易懂]  RaspberryPi内核Linux代码存储在GitHub中,可以在github.com/raspberrypi/linux上查看。一、下载linux内核源码gitclone–depth=1https://github.com/raspberrypi/linux  上面的命令将下载当前的活动分支。省略–depth=1将下载整个存储库,包括所有分支的完整历史记录,但占用更多的存储空间。要下载不同的分支,可以使用以下–branch选项:gitclone–depth=1–b

    2022年7月23日
  • 回溯法求解N皇后问题及其时间复杂度分析

    回溯法求解N皇后问题及其时间复杂度分析回溯法求解N皇后问题及其时间复杂度分析一、回溯法简介1.什么是回溯法?2.回溯法的时间复杂度分析蒙特卡罗方法蒙特卡罗方法在回溯法求解时间复杂度中的应用二、回溯法求解N皇后问题1.回溯法求解N皇后问题的过程2.回溯法求解N皇后问题的时间复杂度2.1求解时的效率分析回溯法进行效率分析的代码2.2时间复杂度分析一、回溯法简介1.什么是回溯法?  相信”迷宫”是许多人儿时的回忆,大家小时候一定都玩过迷宫游戏。我们从不用别人教导,都知道走迷宫的策略是:当遇到一个岔路口,会有以下两种情况:存

    2022年9月30日
  • python3中eval函数用法简介[通俗易懂]

    python3中eval函数用法简介[通俗易懂]python中eval函数的用法十分的灵活,这里主要介绍一下它的原理和一些使用的场合。下面是从python的官方文档中的解释:  Theargumentsareastringandoptionalglobalsandlocals.Ifprovided,globalsmustbeadictionary.Ifprovided,localscan

    2022年10月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号