diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public/sdk/inc/mfc42/afxmt.h | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to '')
-rw-r--r-- | public/sdk/inc/mfc42/afxmt.h | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/public/sdk/inc/mfc42/afxmt.h b/public/sdk/inc/mfc42/afxmt.h new file mode 100644 index 000000000..d12d79aba --- /dev/null +++ b/public/sdk/inc/mfc42/afxmt.h @@ -0,0 +1,255 @@ +// This is a part of the Microsoft Foundation Classes C++ library. +// Copyright (C) 1992-1995 Microsoft Corporation +// All rights reserved. +// +// This source code is only intended as a supplement to the +// Microsoft Foundation Classes Reference and related +// electronic documentation provided with the library. +// See these sources for detailed information regarding the +// Microsoft Foundation Classes product. + +#ifndef __AFXMT_H__ +#define __AFXMT_H__ + +#ifdef _MAC + #error Multithreaded classes not supported in this library variant. +#endif + +#ifndef __AFX_H__ + #include <afx.h> +#endif + +#ifdef _AFX_MINREBUILD +#pragma component(minrebuild, off) +#endif +#ifndef _AFX_FULLTYPEINFO +#pragma component(mintypeinfo, on) +#endif + +#ifdef _AFX_PACKING +#pragma pack(push, _AFX_PACKING) +#endif + +///////////////////////////////////////////////////////////////////////////// +// AFXMT - MFC Multithreaded Extensions (Syncronization Objects) + +// Classes declared in this file + +//CObject + class CSyncObject; + class CSemaphore; + class CMutex; + class CEvent; + class CCriticalSection; + +class CSingleLock; +class CMultiLock; + +#undef AFX_DATA +#define AFX_DATA AFX_CORE_DATA + +///////////////////////////////////////////////////////////////////////////// +// Basic synchronization object + +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; +}; + +///////////////////////////////////////////////////////////////////////////// +// CSemaphore + +class CSemaphore : public CSyncObject +{ + DECLARE_DYNAMIC(CSemaphore) + +// Constructor +public: + CSemaphore(LONG lInitialCount = 1, LONG lMaxCount = 1, + LPCTSTR pstrName=NULL, LPSECURITY_ATTRIBUTES lpsaAttributes = NULL); + +// Implementation +public: + virtual ~CSemaphore(); + virtual BOOL Unlock(); + virtual BOOL Unlock(LONG lCount, LPLONG lprevCount = NULL); +}; + +///////////////////////////////////////////////////////////////////////////// +// CMutex + +class CMutex : public CSyncObject +{ + DECLARE_DYNAMIC(CMutex) + +// Constructor +public: + CMutex(BOOL bInitiallyOwn = FALSE, LPCTSTR lpszName = NULL, + LPSECURITY_ATTRIBUTES lpsaAttribute = NULL); + +// Implementation +public: + virtual ~CMutex(); + BOOL Unlock(); +}; + +///////////////////////////////////////////////////////////////////////////// +// CEvent + +class CEvent : public CSyncObject +{ + DECLARE_DYNAMIC(CEvent) + +// Constructor +public: + CEvent(BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE, + LPCTSTR lpszNAme = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL); + +// Operations +public: + BOOL SetEvent(); + BOOL PulseEvent(); + BOOL ResetEvent(); + BOOL Unlock(); + +// Implementation +public: + virtual ~CEvent(); +}; + +///////////////////////////////////////////////////////////////////////////// +// CCriticalSection + +class CCriticalSection : public CSyncObject +{ + DECLARE_DYNAMIC(CCriticalSection) + +// Constructor +public: + CCriticalSection(); + +// Attributes +public: + operator CRITICAL_SECTION*(); + CRITICAL_SECTION m_sect; + +// Operations +public: + BOOL Unlock(); + BOOL Lock(); + BOOL Lock(DWORD dwTimeout); + +// Implementation +public: + virtual ~CCriticalSection(); +}; + +///////////////////////////////////////////////////////////////////////////// +// CSingleLock + +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; +}; + +///////////////////////////////////////////////////////////////////////////// +// Inline function declarations + +#ifdef _AFX_PACKING +#pragma pack(pop) +#endif + +#ifdef _AFX_ENABLE_INLINES +#define _AFXMT_INLINE inline +#include <afxmt.inl> +#undef _AFXMT_INLINE +#endif + +#undef AFX_DATA +#define AFX_DATA + +#ifdef _AFX_MINREBUILD +#pragma component(minrebuild, on) +#endif +#ifndef _AFX_FULLTYPEINFO +#pragma component(mintypeinfo, off) +#endif + +#endif // __AFXMT_H__ + +///////////////////////////////////////////////////////////////////////////// |