永发信息网

mfc基于对话框怎么构造csemaphore

答案:1  悬赏:0  手机版
解决时间 2021-11-10 04:22
mfc基于对话框怎么构造csemaphore
最佳答案
一、具体实现:
CSemaphore::CSemaphore(LONG lInitialCount,LONG lMaxCount,LPCTSTR pstrName,
LPSECURTY_ATTRIBUTES lpsaAttribute):CSyncObject(pstrName)
CSemaphore::~CSemaphore()
_AFXMT_INLINE BOOL CSemaphore::Unlock()
BOOL CSemaphore::Unlock(LONG lCount,LPCTSTR lpPrevCount)

二、关于带参数的 Lock()函数的使用(例子)
用一个二维数组模拟三个串行端口
在这个例子用到三个对象:信号量,用于对串行口的资源计数
互斥量:修改串行口使用标志数组
临界段:用于向屏幕输出结果
先创建一个MFC支持的控制台工程

int Buffer[3][5];//模拟串行端口
CSemaphore semaphore(3,3,NULL,NULL);//用于访问串行口的信号量
BOOL Flag[3]={TRUE,TRUE,TURE};
CMutex mutex;//用于保护 Flag[3]的互斥量
CCriticalSection section;//用于访问显示器的临界段

从一端口读数据后向另一端口写数据的线程ReadAndWriteThread :
semaphore.Lock();//获串行口 A,此时信号量计数值减1
mutex.Lock(); //用来修改Flag
//标记串行口 A 被占用
mutex.Unlock();

semaphore.Lock();//获串行口 B ,此时信号量计数值减1
mutex.Lock();
//标记串行口 B 被占用
mutex.Unlock();

section.Lock();//获得了两个串行口 ,因为要向屏幕输出以观看,所以临界段保护
//从 A 读数据
//向 B 写数据
section.Unlock();

mutex.Lock();
//释放对串行口A,B的占用:更改标记
mutex.Unlock();

semaphore.Unlock(2);//释放两个信号量
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
嘉定区至苏洲工业园区多少公里
手机的G网和E网有什么区别
硅橡胶有没有无味发泡剂
238除以6的商比较接近
马啸的人物简介
余海洋 有多少余海洋,余海洋同名同姓
经常感觉到心里空虚寂寞,怎么办?
谁有性感沙滩ZERO的种子,给我发一个,谢谢了
古浪大队车管所科目二考场地址在哪,我要去那
天正中怎么把已知坐标输入图纸上
中国打黄扫非官网
240÷18列简便算法
武威市武运机动车检测有限公司地址在什么地方
c1教练员需要什么条件
四川四季天食品有限公司怎么样?
推荐资讯
win10 重置 准备工作一直在1%
求何彦霖,何静《厚德载物》MP3
求魔方CFOP公式图解,F2L最好说明白一点,不
这个插排能带这个空调吗
长方形周长18厘米宽是4厘米长方形的长是多少
佳岛电脑缝纫机怎么恢复出厂设置
虹桥音乐酒吧KTV地址在什么地方,我要处理点
找人制作微信二微码?
万佳利饰品地址好找么,我有些事要过去,
加工中心油冷主轴蜂鸣,哪位大神帮帮我呀!
16x7.5x1.25的简算怎么写
我是职高生,今年高三,英语考三十分,怎样在
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?