8#ifndef INCLUDED_BSLS_BSLLOCKIMPL_WIN32
9#define INCLUDED_BSLS_BSLLOCKIMPL_WIN32
66#include <bsls_platform.h>
68#ifdef BSLS_PLATFORM_OS_WINDOWS
73struct _RTL_CRITICAL_SECTION;
75typedef struct _RTL_CRITICAL_SECTION CRITICAL_SECTION, *LPCRITICAL_SECTION;
77typedef unsigned long DWORD;
80 __declspec(dllimport) BOOL __stdcall InitializeCriticalSectionAndSpinCount(
81 LPCRITICAL_SECTION lpCriticalSection,
84 __declspec(dllimport)
void __stdcall DeleteCriticalSection(
85 LPCRITICAL_SECTION lpCriticalSection);
87 __declspec(dllimport)
void __stdcall EnterCriticalSection(
88 LPCRITICAL_SECTION lpCriticalSection);
90 __declspec(dllimport)
void __stdcall LeaveCriticalSection(
91 LPCRITICAL_SECTION lpCriticalSection);
102class BslLockImpl_win32 {
115#ifdef BSLS_PLATFORM_CPU_64_BIT
117 k_CRITICAL_SECTION_BUFFER_SIZE = 5
120 k_CRITICAL_SECTION_BUFFER_SIZE = 6
134 void *d_lock[k_CRITICAL_SECTION_BUFFER_SIZE];
138 BslLockImpl_win32(
const BslLockImpl_win32&);
139 BslLockImpl_win32& operator=(
const BslLockImpl_win32&);
146 ~BslLockImpl_win32();
176BslLockImpl_win32::BslLockImpl_win32()
178 InitializeCriticalSectionAndSpinCount(
179 reinterpret_cast<_RTL_CRITICAL_SECTION *
>(d_lock), k_SPIN_COUNT);
183BslLockImpl_win32::~BslLockImpl_win32()
185 DeleteCriticalSection(
186 reinterpret_cast<_RTL_CRITICAL_SECTION*
>(d_lock));
191void BslLockImpl_win32::lock()
193 EnterCriticalSection(
194 reinterpret_cast<_RTL_CRITICAL_SECTION*
>(d_lock));
198void BslLockImpl_win32::unlock()
200 LeaveCriticalSection(
201 reinterpret_cast<_RTL_CRITICAL_SECTION*
>(d_lock));
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdlt_iso8601util.h:707