CSyncObject Class
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at CSyncObject Class.
A pure virtual class that provides functionality common to the synchronization objects in Win32.
Syntax
class CSyncObject : public CObject
Members
Public Constructors
Name | Description |
---|---|
CSyncObject::CSyncObject | Constructs a CSyncObject object. |
Public Methods
Name | Description |
---|---|
CSyncObject::Lock | Gains access to the synchronization object. |
CSyncObject::Unlock | Gains access to the synchronization object. |
Public Operators
Name | Description |
---|---|
CSyncObject::operator HANDLE | Provides access to the synchronization object. |
Public Data Members
Name | Description |
---|---|
CSyncObject::m_hObject | The handle to the underlying synchronization object. |
Remarks
The Microsoft Foundation Class Library provides several classes derived from CSyncObject
. These are CEvent, CMutex, CCriticalSection, and CSemaphore.
For information on how to use the synchronization objects, see the article Multithreading: How to Use the Synchronization Classes.
Inheritance Hierarchy
CSyncObject
Requirements
Header: afxmt.h
CSyncObject::CSyncObject
Constructs a synchronization object with the supplied name.
explicit CSyncObject(LPCTSTR pstrName);
virtual ~CSyncObject();
```
### Parameters
`pstrName`
The name of the object. If **NULL**, *pstrName* will be null.
## <a name="csyncobject__lock"></a> CSyncObject::Lock
Call this function to gain access to the resource controlled by the synchronization object.
virtual BOOL Lock(DWORD dwTimeout = INFINITE);
### Parameters
`dwTimeout`
Specifies the amount of time in milliseconds to wait for the synchronization object to be available (signaled). If **INFINITE**, `Lock` will wait until the object is signaled before returning.
### Return Value
Nonzero if the function was successful; otherwise 0.
### Remarks
If the synchronization object is signaled, `Lock` will return successfully and the thread now owns the object. If the synchronization object is nonsignaled (unavailable), `Lock` will wait for the synchronization object to become signaled up to the number of milliseconds specified in the *dwTimeOut* parameter. If the synchronization object did not become signaled in the specified amount of time, `Lock` returns failure.
## <a name="csyncobject__m_hobject"></a> CSyncObject::m_hObject
The handle to the underlying synchronization object.
HANDLE m_hObject;
## <a name="csyncobject__operator_handle"></a> CSyncObject::operator HANDLE
Use this operator to get the handle of the `CSyncObject` object.
operator HANDLE() const;
### Return Value
If successful, the handle of the synchronization object; otherwise, **NULL**.
### Remarks
You can use the handle to call Windows APIs directly.
## <a name="csyncobject__unlock"></a> CSyncObject::Unlock
The declaration of `Unlock` with no parameters is a pure virtual function, and must be overridden by all classes deriving from `CSyncObject`.
virtual BOOL Unlock() = 0; virtual BOOL Unlock( LONG lCount,
LPLONG lpPrevCount = NULL);
### Parameters
`lCount`
Not used by default implementation.
`lpPrevCount`
Not used by default implementation.
### Return Value
Default implementation always returns **TRUE**.
### Remarks
The default implementation of the declaration with two parameters always returns **TRUE**. This function is called to release access to the synchronization object owned by the calling thread. The second declaration is provided for synchronization objects such as semaphores that allow more than one access of a controlled resource.
## See Also
[CObject Class](../Topic/CObject%20Class.md)
[Hierarchy Chart](../Topic/Hierarchy%20Chart.md)