猎豹MFC--进程和线程--创建线程AfxBeginThread() SetDlgItemInt()线程暂停继续终止
Posted hungryvampire
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猎豹MFC--进程和线程--创建线程AfxBeginThread() SetDlgItemInt()线程暂停继续终止相关的知识,希望对你有一定的参考价值。
![技术分享](https://image.cha138.com/20200626/d58bae83439c466daa0b522ef40d1276.jpg)
SPY++查看 进程下面的线程:
![技术分享](https://image.cha138.com/20200626/9c7686be823e48d48b7824f5fee7fb6c.jpg)
另一个线程函数:
![技术分享](https://image.cha138.com/20200626/bd95d3dacb26454db1c91dde9266639c.jpg)
定义一个指针变量:
在构造函数中初始化:
![技术分享](https://image.cha138.com/20200626/7233d931197b4317b28ae616e0b9c644.jpg)
暂停线程:
![技术分享](https://image.cha138.com/20200626/4427fae3a0ed495fb4c0640049203f1f.jpg)
线程继续:
![技术分享](https://image.cha138.com/20200626/68d821ac31fb42fbb5a525f5fd352b8c.jpg)
定义布尔变量 记录 线程有没有在运行:
初始化该变量:
![技术分享](https://image.cha138.com/20200626/a1005a4ce5034118a5b8f2b1dfcdb58c.jpg)
![技术分享](https://image.cha138.com/20200626/31063b169e504ebd95017fd3702fee06.jpg)
修改县城函数demoA:
![技术分享](https://image.cha138.com/20200626/28fc1942e30b43d0974c9ae232006069.jpg)
对话框添加按钮,双击该按钮:
增加一个线程函数:
实现线程函数:
增加第2个按钮 掉用第二个线程函数:‘
![技术分享](https://image.cha138.com/20200626/13fe9c0914cc4a3f9b87d93f20638cee.jpg)
按了第一个按钮立马按第二个按钮时 也就是当两个线程并发执行时就会出错:
![技术分享](https://image.cha138.com/20200626/4235c5d7113b441d91e84948d709b981.jpg)
![技术分享](https://image.cha138.com/20200626/af03556de8a8433d93ba5c83b6ab883f.jpg)
以上是线程同步的四种方法,是MFC的C++类
定义指针:指向临界区对象:
![技术分享](https://image.cha138.com/20200626/0d834bc9c67342828f66ef0f5b1fc8fd.jpg)
在构造函数中 创建临界区对象
如下 用临界区对象调用lock()函数便可保护操作内容
第一个线程结束 了 第二个线程才成调用
//////////////////////////////////////////////////////////////////////////
法二使用互斥量对象进行线程同步:
定义指针指向互斥量对象:
创建互斥量对象:
![技术分享](https://image.cha138.com/20200626/a90557254b77442fa82bfc7ad6b4c290.jpg)
CSingleLock为MFC中的类:
![技术分享](https://image.cha138.com/20200626/52bf0b24f8e04998a0f679370a9cb1aa.jpg)
线程B一样:
///////////////////////////////////////////////////
法三 信号量:
![技术分享](https://image.cha138.com/20200626/01f4b892d8184cd38bffb0bb03be07f5.jpg)
![技术分享](https://image.cha138.com/20200626/6b05929a64cf431baa8db20a6a308590.jpg)
其余不变:
线程B一样用信号量创建锁:
定义变量:
![技术分享](https://image.cha138.com/20200626/dee3964b8a924433a4d3a692138db7b0.jpg)
![技术分享](https://image.cha138.com/20200626/528aaa43eae54643818db218b05d5dc7.jpg)
析构如下:
![技术分享](0a687dd0-f515-48a8-8bbf-1982a3611d20_files/6b41ac0e-2e46-4cf5-96af-a5aef4ba0bd4.png)
![技术分享](https://image.cha138.com/20200626/916f56b67f8e4208a421c1c76c2bf45f.jpg)
另一个进程也一样。
以上是关于猎豹MFC--进程和线程--创建线程AfxBeginThread() SetDlgItemInt()线程暂停继续终止的主要内容,如果未能解决你的问题,请参考以下文章