DEMO程序:TestSemaphore_DEMO.rar

源代码:TestSemaphore_SRC.rar

---关键代码如下---

void CTestSemaphoreDlg::OnBnClickedButtonThread1()
{
// TODO: 在此添加控件通知处理程序代码
AfxBeginThread((AFX_THREADPROC)thread1WriteA, this);
} void CTestSemaphoreDlg::OnBnClickedButtonThread2()
{
// TODO: 在此添加控件通知处理程序代码
AfxBeginThread((AFX_THREADPROC)thread2WriteB, this);
} void CTestSemaphoreDlg::OnBnClickedButtonThread3()
{
// TODO: 在此添加控件通知处理程序代码
AfxBeginThread((AFX_THREADPROC)thread3WriteC, this);
} UINT CTestSemaphoreDlg::thread1WriteA( LPVOID pParam )
{
CTestSemaphoreDlg* pThis = (CTestSemaphoreDlg*)pParam;
pThis->WriteA();
return ;
} void CTestSemaphoreDlg::WriteA()
{
CString str;
g_semaphore.Lock();
for (int i=; i<; i++)
{
Sleep();
m_editDisp.GetWindowText(str);
str += "A";
m_editDisp.SetWindowText(str);
}
g_semaphore.Unlock();
} UINT CTestSemaphoreDlg::thread2WriteB( LPVOID pParam )
{
CTestSemaphoreDlg* pThis = (CTestSemaphoreDlg*)pParam;
pThis->WriteB();
return ;
} void CTestSemaphoreDlg::WriteB()
{
CString str;
g_semaphore.Lock();
for (int i=; i<; i++)
{
Sleep();
m_editDisp.GetWindowText(str);
str += "B";
m_editDisp.SetWindowText(str);
}
g_semaphore.Unlock();
} UINT CTestSemaphoreDlg::thread3WriteC( LPVOID pParam )
{
CTestSemaphoreDlg* pThis = (CTestSemaphoreDlg*)pParam;
pThis->WriteC();
return ;
} void CTestSemaphoreDlg::WriteC()
{
CString str;
g_semaphore.Lock();
for (int i=; i<; i++)
{
Sleep();
m_editDisp.GetWindowText(str);
str += "C";
m_editDisp.SetWindowText(str);
}
g_semaphore.Unlock();
}

通过本教程可以迅速学会使用MFC中信号量的运用!

MFC信号量使用指南的更多相关文章

  1. MFC 多线程及线程同步

    一.MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环. 工作者线程没有消息机制,通常 ...

  2. 《linux性能及调优指南》 3.5 网络瓶颈

    3.5 Network bottlenecks A performance problem in the network subsystem can be the cause of many prob ...

  3. CPP-基础:信号量

    windows api 多线程---信号量 信号量(Semaphore)和互斥量一样,属于内核对象.它自动执行可用资源查询的测试,如果有可用资源,则可用资源的计数减少1,从而避免其它线程请求资源.当该 ...

  4. mfc小工具开发之定时闹钟之---多线程急线程同步

    一.MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环. 工作者线程没有消息机制,通常 ...

  5. Visual C++线程同步技术剖析:临界区,时间,信号量,互斥量

    使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作.更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解.正常情况下对这种处理结果的了解应当在其 ...

  6. MFC中的CString类使用方法指南

    MFC中的CString类使用方法指南 原文出处:codeproject:CString Management [禾路:这是一篇比较老的资料了,但是对于MFC的程序设计很有帮助.我们在MFC中使用字符 ...

  7. MFC学习指南大纲

    最近一直在做MFC的项目,顺便学习一下以下MFC核心知识吧: 大纲: 1. 消息队列 2. send message 3. post message 4. 面向对象编程 5. 指针 一个一个来学习哈.

  8. 并发编程-concurrent指南-信号量Semaphore

    Semaphore翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可. acquire( ...

  9. mfc通过信号量保证线程同步

    1.声明一个全局handle,记住在cpp里也声明 extern HANDLE uiHandle; 2.创建信号量 uiHandle = CreateSemaphore(NULL,1,1,NULL); ...

随机推荐

  1. spring创建单例bean

    (使用的spring版本是3.2.10) 在xml文件中配置一个普通的bean,默认使用单例,创建该bean的调用栈如下: ClassPathXmlApplicationContext //Class ...

  2. 随机产生div背景颜色变化

    使一个DIV在每次刷新后变化背景颜色,很容易想到JS的random()函数:通过每次刷新页面产生使背景rgb随机产生 <!doctype html> <html> <he ...

  3. CF 463A && 463B 贪心 && 463C 霍夫曼树 && 463D 树形dp && 463E 线段树

    http://codeforces.com/contest/462 A:Appleman and Easy Task 要求是否全部的字符都挨着偶数个'o' #include <cstdio> ...

  4. POJ 2516 Minimum Cost 最小费用流 难度:1

    Minimum Cost Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 13511   Accepted: 4628 Des ...

  5. vue-router配置之通用路径

    目的:浏览器地址栏输入了未匹配的地址时,前端控制跳转到首页index页面: 项目入口js:(一般根据项目结构不同,这个js一般取名为:app.js或者main.js) import Router fr ...

  6. (C/C++学习笔记) 九. 变量的存储类型

    九. 变量的存储类型 ● 变量的存储类型(见附页) ● 注释 ①对于自动变量,它属于动态存储方式. 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式.由此看来,一个 ...

  7. maven加载本地jar

    [问题描述] 由于对接公司外部产品,导致公司内网上的maven库中并不存在对应的SDK jar,因此,需要通过maven加载本地jar的方式来实现工程编译. [方法] 方法很简单, 1.在resour ...

  8. 入门级:理解FAT32文件系统(转载翻译)

    FAT(File Allocation Table ) 这个网页的目的是帮助你理解怎么样在微软FAT32文件系统下取得数据,处理的硬盘的大小通常在500M到几百G之间.FAT是一个相对简单和纯净的文件 ...

  9. Python+Requests接口测试教程(2):requests

    开讲前,告诉大家requests有他自己的官方文档:http://cn.python-requests.org/zh_CN/latest/ 2.1 发get请求 前言requests模块,也就是老污龟 ...

  10. IISExpress 开放局域网访问

    1. 设置 IISExpress 配置文件 applicationhost.config VS2015 :这个配置文件 在工程目录下的 .vs/config 隐藏目录 其他版本 :在用户目录中的 II ...