MFC/Serial & Socket 2010. 12. 17. 11:55

CSingleLock Base Class 없습니다.

CSingleLock 클래스 객체 다중 스레드 프로그램 리소스에 대한 액세스 제어 사용되는 액세스 제어 메커니즘 나타냅니다.

동기화 클래스 CSemaphore, CMutex, CCriticalSection, 그리고 CEvent 사용하기 위해서는,  당신은 CSingleLock 또는 CMultiLock Object 하나를 동기화 객체를 기다려야 합니다. CSingleLock 사용자가 번에 하나의 객체를 기다릴 사용하고  CMultiLock 여러 개의객체가 있을 특정한 시간에 사용할 있습니다.


CSingleLock 개체 사용하려면 관리 리소스의 클래스 멤버 함수 내부 생성자 호출합니다. 그런 다음 리소스 사용할 있는지 확인하려면 IsLocked 멤버 함수 호출합니다. 경우, 멤버 함수 나머지 계속합니다. 리소스 사용할 수없는 경우, 릴리스 수있는 리소스에 대한 지정된 시간 금액 또는 반환 실패 기다립니다. CSingleLock 개체를 다시 사용하거나 CSingleLock 개체 파괴될 있는 경우 리소스 사용 잠금 해제 함수를 호출하거나, 완료됩니다.

CSingleLock 개체 CSyncObject에서 파생 개체의 존재를 필요로합니다. 이것은 보통 관리 리소스 클래스의 데이터 멤버입니다.

 
class CSingleLock
{
// Constructors
public:
 CSingleLock(CSyncObject* pObject, BOOL bInitialLock = FALSE);
// Operations
public:
 BOOL Lock(DWORD dwTimeOut = INFINITE);
 BOOL Unlock();
 BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
 BOOL IsLocked();
// Implementation
public:
 ~CSingleLock();
protected:
 CSyncObject* m_pObject;
 HANDLE  m_hObject;
 BOOL    m_bAcquired;
};
/////////////////////////////////////////////////////////////////////////////
// CMultiLock



class CMultiLock
{
// Constructor
public:
 CMultiLock(CSyncObject* ppObjects[], DWORD dwCount, BOOL bInitialLock = FALSE);
// Operations
public:
 DWORD Lock(DWORD dwTimeOut = INFINITE, BOOL bWaitForAll = TRUE,
  DWORD dwWakeMask = 0);
 BOOL Unlock();
 BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
 BOOL IsLocked(DWORD dwItem);
// Implementation
public:
 ~CMultiLock();
protected:
 HANDLE  m_hPreallocated[8];
 BOOL    m_bPreallocated[8];
 CSyncObject* const * m_ppObjectArray;
 HANDLE* m_pHandleArray;
 BOOL*   m_bLockedArray;
 DWORD   m_dwCount;
};

'MFC > Serial & Socket' 카테고리의 다른 글

Server에서 멀티소켓 관리하기  (0) 2010.11.29
Thread를 사용해서 Socket관리하기  (0) 2010.11.29
: