23 namespace Catalog_Namespace {
44 template <
typename inner_type>
46 std::thread::id tid = std::this_thread::get_id();
48 if (cat->thread_holding_write_lock != tid && !inner_type::thread_holds_read_lock) {
55 inner_type::thread_holds_read_lock =
true;
67 T::thread_holds_read_lock =
false;
88 template <
typename inner_type>
90 std::thread::id tid = std::this_thread::get_id();
92 if (cat->thread_holding_sqlite_lock != tid) {
99 cat->thread_holding_sqlite_lock = tid;
113 std::thread::id no_thread;
114 catalog->thread_holding_sqlite_lock = no_thread;
126 template <
typename T>
133 template <
typename inner_type>
135 std::thread::id tid = std::this_thread::get_id();
137 if (cat->thread_holding_write_lock != tid) {
144 cat->thread_holding_write_lock = tid;
156 std::thread::id no_thread;
157 catalog->thread_holding_write_lock = no_thread;
void lock_catalog(const inner_type *cat)
std::shared_lock< T > shared_lock
sqlite_lock(const T *cat)
heavyai::unique_lock< heavyai::DistributedSharedMutex > dlock
std::unique_lock< T > unique_lock
heavyai::shared_lock< heavyai::DistributedSharedMutex > dlock
heavyai::unique_lock< heavyai::shared_mutex > lock
read_lock< T > cat_read_lock
void lock_catalog(const inner_type *cat)
bool g_enable_watchdog false
heavyai::unique_lock< heavyai::DistributedSharedMutex > dlock
heavyai::shared_lock< heavyai::shared_mutex > lock
heavyai::unique_lock< std::mutex > lock
void lock_catalog(const inner_type *cat)