Skip to content

Commit fe62f89

Browse files
committed
Added ConditionalCriticalSection
1 parent a811434 commit fe62f89

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

include/react/common/Concurrency.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,33 @@ class ThreadLocalStaticPtr
100100
template <typename T>
101101
T* ThreadLocalStaticPtr<T>::ptr_(nullptr);
102102

103+
///////////////////////////////////////////////////////////////////////////////////////////////////
104+
/// ConditionalCriticalSection
105+
///////////////////////////////////////////////////////////////////////////////////////////////////
106+
template <typename TMutex, bool is_enabled>
107+
class ConditionalCriticalSection;
108+
109+
template <typename TMutex>
110+
class ConditionalCriticalSection<TMutex,false>
111+
{
112+
public:
113+
template <typename F>
114+
void Access(const F& f) { f(); }
115+
};
116+
117+
template <typename TMutex>
118+
class ConditionalCriticalSection<TMutex,true>
119+
{
120+
public:
121+
template <typename F>
122+
void Access(const F& f)
123+
{// mutex_
124+
std::lock_guard<TMutex> lock(mutex_);
125+
126+
f();
127+
}// ~mutex_
128+
private:
129+
TMutex mutex_;
130+
};
131+
103132
/****************************************/ REACT_IMPL_END /***************************************/

0 commit comments

Comments
 (0)