| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent a811434 commit fe62f89
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -100,4 +100,33 @@ class ThreadLocalStaticPtr | |||
| 100 | 100 | template <typename T> | |
| 101 | 101 | T* ThreadLocalStaticPtr<T>::ptr_(nullptr); | |
| 102 | 102 | ||
| 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 | + | ||
| 103 | 132 | /****************************************/ REACT_IMPL_END /***************************************/ | |
| Back | FazBrowse Home | New Git URL |
0 commit comments