#pragma once #include #include #include #include namespace chatterino { // Debug-class which asserts if guard of the same object has been called from different threads struct ThreadGuard { #ifndef NDEBUG std::mutex mutex; std::optional threadID; #endif inline void guard() { #ifndef NDEBUG std::unique_lock lock(this->mutex); auto currentThreadID = std::this_thread::get_id(); if (!this->threadID.has_value()) { this->threadID = currentThreadID; return; } assert(this->threadID == currentThreadID); #endif } }; } // namespace chatterino