zoukankan      html  css  js  c++  java
  • 在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);
    }

    第五步:运行测试。

     点击视图区域

    出现下面的东东

  • 相关阅读:
    【PAT】1001 害死人不偿命的(3n+1)猜想(动态更新)
    文件指令集
    近距离接触电脑
    文件管理
    文件写作方法
    文件读取方法
    打开文件的逻辑
    话术库
    max的逻辑
    抽象化指令
  • 原文地址:https://www.cnblogs.com/wenluderen/p/4302936.html
Copyright © 2011-2022 走看看