友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

C语言实例教程(PDF格式)-第135章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




CCountArray便是一个线程安全类。  



以下是COUNTARRAY。H,CcountArray的头文件。  



#include 〃afxmt。h〃  



class CCountArray  



{  



private:  



int array'10';  



CCriticalSection criticalSection;  



public:  



CCountArray() {};  


…………………………………………………………Page 650……………………………………………………………

~CCountArray() {};  



void SetArray(int value);  



void GetArray(int dstArray'10');  



};  



在该头文件中包含一个MFC的头文件afxmt。h,以使程序可以使用 

CCriticalSection类。在CCountArray类的声明中,头文件声明了一 

个十个元素的整形数组,这是CCriticalSection类的对象将要保护的 

数据,并且声明了一个CCriticalSection类的对象 

criticalSection。CCountArray类的公共成员函数包含构造和析购函 

数。后面两个成员函数用于访问数据。  



下面是CCountArray类的执行文件。注意,在每一个成员函数中, 

CCountArray都在密切关注着CCriticalSection类的对象的状态。这 

也意味这任何调用这些成员函数的线程不必担心线程同步。例如,如 

果线程1调用了SetArray();SetArray()所做的第一件事就是调用 

criticalSection。Lock();这将把criticalSection给线程1,此后可 

以完成一个循环而不用担心被其它线程打断。如果线程2调用了 

SetArray()或GetArray();criticalSection。Lock()语句将挂起线程2 

直到线程1完成循环,执行criticalSection。Unlock()语句将对 

criticalSection的拥有权释放。这时系统唤醒线程2,并将 

criticalSection给它。通过这种方式,所有线程必须安静的等待它 

们访问数据的机会到来。  



下面是COUNTARRAY。CPP,CcountArray类的执行文件。  



#include 〃stdafx。h〃  



#include 〃CountArray。h〃  



void CCountArray::SetArray(int value)  



{  



criticalSection。Lock();  



for (int x=0; x
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!