在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)
上一篇 2022年7月4日 上午9:16
下一篇 2022年7月4日 上午9:16


相关推荐

  • 更改QT程序的图标

    更改QT程序的图标

    2021年8月17日
    62
  • 云服务器怎么配置cpu与内存搭配「建议收藏」

    云服务器怎么配置cpu与内存搭配「建议收藏」很多朋友在购买云服务器之前都会搜服务器一般用几核才够用,因为服务器现在配置很多。低到1核2G、2核4G。高到16核32G、32核64G。甚至某些云服务器可以做到256核5120G这种神奇配置。那么购买云服务器时如何选择cpu与内存搭配?出现资源不足时应如何排查原因呢?一、处理器性能解析首先要明确一点,虽然都是多少核。但是服务器的处理器性能还是有差异的。具体可以搜对应处理器CPU性能天梯。阿里云的服务器都是定制…

    2022年5月22日
    411
  • Jdk下载需要登录账号解决「建议收藏」

    Jdk下载需要登录账号解决「建议收藏」大家好,目前在官网下载jdk1.8的时候需要登陆,这边分享一个账号,方便下载:账号:2696671285@qq.com密码:Oracle123

    2022年7月16日
    186
  • vue路由懒加载的两种方式

    vue路由懒加载的两种方式1 当一个 vue 项目很大的时候 对于一些 暂时 用不到的组件 我们可以不进行加载 等到用到次组件时再加载 这样可以优化 spa 应用首次加载白屏情况 也给用户更好的体验 这样就是 vue 路由懒加载 2 常用的懒加载方式有两种 即使用 ES 中的 import 和 vue 异步组件 2 1 未使用懒加载 importHelloW components HelloWorld exportdefaul routes p

    2026年3月16日
    2
  • matlab作卷积的公式,卷积相关公式的matlab代码

    matlab作卷积的公式,卷积相关公式的matlab代码取半径 3 用 matlab 代码实现上式公式 length 3 forKi 1 lengthforKj 1 lengthforKk 1 lengthKsigma Ki Kj Kk exp Ki 2 2 8 Kj 2 2 8 Kk 2 2 8 此公式为 K u 3endendendKO

    2026年3月16日
    2
  • 链表排序python快排_python链表实例

    链表排序python快排_python链表实例此文章是跟DataWhale开源组织刷leetcode算法题时所写,主要内容借鉴算法通关手册1.链表排序简介在数组排序中,常见的排序算法有:冒泡,选择,插入,希尔,归并,快速,堆,计数,桶,基数排序等而对于链表排序而言,因为链表不支持随机访问,访问链表后面的节点只能依靠next指针从头部顺序遍历,所以相对于数组排序问题来说,链表排序问题会更加复杂一点。下面来总结一下适合链表排序与不适合链表排序的算法:适合链表的排序算法:冒泡,选择,插入,归并,快速,计数,桶,基数排序不适合链表的排序算法:希尔

    2022年10月11日
    6

发表回复

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

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