CSingleLock는 Base Class가 없습니다.
CSingleLock 클래스의 객체는 다중 스레드 프로그램의 리소스에 대한 액세스를 제어에 사용되는 액세스 제어 메커니즘을 나타냅니다.
동기화 클래스인 CSemaphore, CMutex, CCriticalSection, 그리고 CEvent를 사용하기 위해서는, 당신은 CSingleLock 또는 CMultiLock중 Object 중 하나를 꼭 동기화 될 객체를 기다려야 합니다. CSingleLock은 사용자가 한 번에 하나의 객체를 기다릴 때 사용하고 CMultiLock은 여러 개의객체가 있을 때 특정한 시간에 사용할 수 있습니다.
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 |