登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

... ...

 
 
 

日志

 
 

VC++多线程中用到的同步对象  

2010-08-03 17:26:17|  分类: VC++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#include <afxmt.h>

下面是afxmt.h里的类声明:

 class CSyncObject;
  class CSemaphore;
  class CMutex;
  class CEvent;
  class CCriticalSection;

class CSingleLock;
class CMultiLock;

//下面把单词解释一下:

sync:同步

object:对象

Semaphore:信号

Mutex:互斥

Event:事件

Critical:临界

Section:单元,区

Single:单一的

Lock:锁

Multi:Multimedia的缩写:多

//下面看一下各类的派生关系

=========================

class CSyncObject : public CObject

class CSemaphore : public CSyncObject

class CMutex : public CSyncObject

class CEvent : public CSyncObject

class CCriticalSection : public CSyncObject

class CSingleLock

class CMultiLock

//接下来分析一下几个类的实现

第一个:

class CSyncObject : public CObject
{
 DECLARE_DYNAMIC(CSyncObject)

// Constructor
public:
 CSyncObject(LPCTSTR pstrName);

// Attributes
public:
 operator HANDLE() const;
 HANDLE  m_hObject;

// Operations
 virtual BOOL Lock(DWORD dwTimeout = INFINITE);
 virtual BOOL Unlock() = 0;
 virtual BOOL Unlock(LONG /* lCount */, LPLONG /* lpPrevCount=NULL */)
  { return TRUE; }

// Implementation
public:
 virtual ~CSyncObject();
#ifdef _DEBUG
 CString m_strName;
 virtual void AssertValid() const;
 virtual void Dump(CDumpContext& dc) const;
#endif
 friend class CSingleLock;
 friend class CMultiLock;
};

从以上代码,可以看到,

class CSyncObject : public CObject ,CSyncObject是从CObject类派生来的,这个类叫同步对象类,和其它的类一样,内部无非就是一些构造函数,析构函数,数据成员,函数成员,它的每一个数据成员的定义,都是因为某种需求而定义,函数成员,也一定是为了提供某种功能而提供,我们继续看它的这些内容:

virtual BOOL Lock(DWORD dwTimeout = INFINITE);

//这个虚函数,返回值为BOOL,函数名为Lock,参数为DWORD类型,从参数对象的意思可以看出,它是一个超时值
 virtual BOOL Unlock() = 0;

//这个虚函数,返回值为BOOL,函数名为Unlock,无参数,解锁的意思
 virtual BOOL Unlock(LONG /* lCount */, LPLONG /* lpPrevCount=NULL */)

//这个虚函数,返回值为BOOL,函数名为Unlock,和上面那个同名的,算是函数的重载吧(提醒自己一下有这个重载的名字,呵呵),参数为LONG和LPLONG,这两个不太明白

 virtual ~CSyncObject();

//这个是析构函数:析构函数同类名,前面加那个波浪线,呵呵,不需要参数;

friend class CSingleLock;
 friend class CMultiLock;

这两个是友元类的声明,那自然代表了关系不一般了,友元类可以方便的操作一般类没有权限访问的函数和数据成员

 

 

 


 

  评论这张
 
阅读(965)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018