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. html frameset的介绍

    frameset 元素可以定义一个框架集.它被用来组织多个窗口(框架).每个框架存有独立的文档. 属性 ①border 设置框架的边框粗细. ②bordercolor 设置框架的边框颜色. ③fram ...

  2. ASP.NET MVC4 Razor

    2014-09-18 14:06 by 易code, 2854 阅读, 0 评论, 收藏, 编辑 1 Code Expressions  代码表达式 @表达式  or  @(Expressions ) ...

  3. SqlServer中的merge操作(转载)

    SqlServer中的merge操作(转载)   今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有 ...

  4. weblogic下更改jsp不生效的解决办法

    1.删除user_projects\domains\base_domain(我自己的域名)\servers\AdminServer目录下的所有文件夹 一下为转载from:http://blog.itp ...

  5. Java——线程死锁问题

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  6. python面试知识总结

    1. 先做自我介绍 2. 做Python几年了?为什么选择Python?3. 学历?大学什么专业?4. 除了Python以外对其他语言有没有了解?5. 你对Python这门语言的看法?6. 在学习Py ...

  7. MySQL添加字段和修改字段

    MySQL添加字段的方法并不复杂,下面将为您详细介绍MYSQL添加字段和修改字段等操作的实现方法,希望对您学习MySQL添加字段方面会有所帮助. 1添加表字段 alter table table1 a ...

  8. IP addresses in C#

    在.Net网络库里面最大的优点就是IP地址和端口被成对处理,相比于UNIX中用的方法真是一个巨大的令人欢迎的进步..NET定义了两个类来处理关于IP地址的问题. One of the biggest ...

  9. ImportError: cannot import name 'path'

    ImportError: cannot import name 'path' django的版本问题 先卸载 django1.11.14 重新安装最新的django2.0.7

  10. BitBlt函数的绘制属性

    BOOL BitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int ...