1 /* ///////////////////////////////////////////////////////////////////////
2 * File: critical_section_lock.h
7 * Brief: critical_section_lock class
10 * Copyright (c) 2008-2020, Waruqi All rights reserved.
11 * //////////////////////////////////////////////////////////////////// */
12 #ifndef EXTL_WIN_SYNCH_CRITICAL_SECTION_LOCK_H
13 #define EXTL_WIN_SYNCH_CRITICAL_SECTION_LOCK_H
15 /*!\file critical_section_lock.h
16 * \brief critical_section_lock class
19 # error critical_section_lock.h need be supported by c++.
22 /* ///////////////////////////////////////////////////////////////////////
26 #include "../../synch/lock_base.h"
27 #include "critical_section.h"
29 /* ///////////////////////////////////////////////////////////////////////
30 * ::extl::platform::win namespace
32 EXTL_WIN_BEGIN_WHOLE_NAMESPACE
34 /*!\brief critical_section_lock class
35 * \ingroup extl_group_synch
37 class critical_section_lock
38 : public lock_base
< critical_section_lock
>
41 typedef lock_base
< critical_section_lock
> base_type
;
42 typedef critical_section_lock class_type
;
43 typedef base_type::size_type size_type
;
46 critical_section m_cs_obj
;
49 critical_section_lock()
53 ~critical_section_lock()
55 if(base_type::is_locked())
68 return m_cs_obj
.try_enter();
76 /* ///////////////////////////////////////////////////////////////////////
79 #ifdef EXTL_SYNCH_LOCK_TEST_ENABLE
80 # include "unit_test/critical_section_lock_test.h"
83 /* ///////////////////////////////////////////////////////////////////////
84 * ::extl::platform::win namespace
86 EXTL_WIN_END_WHOLE_NAMESPACE
88 /* //////////////////////////////////////////////////////////////////// */
89 #endif /* EXTL_WIN_SYNCH_CRITICAL_SECTION_LOCK_H */
90 /* //////////////////////////////////////////////////////////////////// */