猎豹MFC--进程和线程--创建线程AfxBeginThread() SetDlgItemInt()线程暂停继续终止
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203241115-1842283672.png)
SPY++查看 进程下面的线程:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203242928-1803713332.png)
另一个线程函数:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203244803-1123028145.png)
定义一个指针变量:
在构造函数中初始化:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203247521-1852509507.png)
暂停线程:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203248037-2069218788.png)
线程继续:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203248568-449936227.png)
定义布尔变量 记录 线程有没有在运行:
初始化该变量:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203250631-849438508.png)
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203251053-894608640.png)
修改县城函数demoA:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203251928-1312242008.png)
对话框添加按钮,双击该按钮:
增加一个线程函数:
实现线程函数:
增加第2个按钮 掉用第二个线程函数:‘
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203253693-1847134428.png)
按了第一个按钮立马按第二个按钮时 也就是当两个线程并发执行时就会出错:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203255396-1769152833.png)
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203256412-506265376.png)
以上是线程同步的四种方法,是MFC的C++类
定义指针:指向临界区对象:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203256724-1245489832.png)
在构造函数中 创建临界区对象
如下 用临界区对象调用lock()函数便可保护操作内容
第一个线程结束 了 第二个线程才成调用
//////////////////////////////////////////////////////////////////////////
法二使用互斥量对象进行线程同步:
定义指针指向互斥量对象:
创建互斥量对象:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203259131-1484744337.png)
CSingleLock为MFC中的类:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203259771-1166502942.png)
线程B一样:
///////////////////////////////////////////////////
法三 信号量:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203300881-779150157.png)
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203301553-268222889.png)
其余不变:
线程B一样用信号量创建锁:
定义变量:
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203303240-1356558268.png)
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203303818-443576018.png)
析构如下:
![](0a687dd0-f515-48a8-8bbf-1982a3611d20_files/6b41ac0e-2e46-4cf5-96af-a5aef4ba0bd4.png)
![](https://images2015.cnblogs.com/blog/751322/201603/751322-20160320203332506-889937430.png)
另一个进程也一样。