mfc基于对话框怎么构造csemaphore
答案:1 悬赏:0 手机版
解决时间 2021-11-10 04:22
- 提问者网友:wodetian
- 2021-11-09 19:45
mfc基于对话框怎么构造csemaphore
最佳答案
- 五星知识达人网友:妄饮晩冬酒
- 2021-11-09 20:11
一、具体实现:
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);//释放两个信号量
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);//释放两个信号量
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯