1
0
Fork 0

Merge pull request #101072 from hpvb/thread-id-optimization

Optimize `Thread::get_caller_id()`
This commit is contained in:
Rémi Verschelde 2025-01-05 14:52:18 +01:00 committed by GitHub
commit da4f9339ea
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 3 additions and 5 deletions

View File

@ -38,8 +38,8 @@
#include "core/object/script_language.h" #include "core/object/script_language.h"
SafeNumeric<uint64_t> Thread::id_counter(1); // The first value after .increment() is 2, hence by default the main thread ID should be 1. SafeNumeric<uint64_t> Thread::id_counter(1); // The first value after .increment() is 2, hence by default the main thread ID should be 1.
thread_local Thread::ID Thread::caller_id = Thread::id_counter.increment();
thread_local Thread::ID Thread::caller_id = Thread::UNASSIGNED_ID;
#endif #endif
Thread::PlatformFunctions Thread::platform_functions; Thread::PlatformFunctions Thread::platform_functions;

View File

@ -112,6 +112,7 @@ private:
static PlatformFunctions platform_functions; static PlatformFunctions platform_functions;
ID id = UNASSIGNED_ID; ID id = UNASSIGNED_ID;
static SafeNumeric<uint64_t> id_counter; static SafeNumeric<uint64_t> id_counter;
static thread_local ID caller_id; static thread_local ID caller_id;
THREADING_NAMESPACE::thread thread; THREADING_NAMESPACE::thread thread;
@ -119,7 +120,7 @@ private:
static void callback(ID p_caller_id, const Settings &p_settings, Thread::Callback p_callback, void *p_userdata); static void callback(ID p_caller_id, const Settings &p_settings, Thread::Callback p_callback, void *p_userdata);
static void make_main_thread() { caller_id = MAIN_ID; } static void make_main_thread() { caller_id = MAIN_ID; }
static void release_main_thread() { caller_id = UNASSIGNED_ID; } static void release_main_thread() { caller_id = id_counter.increment(); }
public: public:
static void _set_platform_functions(const PlatformFunctions &p_functions); static void _set_platform_functions(const PlatformFunctions &p_functions);
@ -127,9 +128,6 @@ public:
_FORCE_INLINE_ ID get_id() const { return id; } _FORCE_INLINE_ ID get_id() const { return id; }
// get the ID of the caller thread // get the ID of the caller thread
_FORCE_INLINE_ static ID get_caller_id() { _FORCE_INLINE_ static ID get_caller_id() {
if (unlikely(caller_id == UNASSIGNED_ID)) {
caller_id = id_counter.increment();
}
return caller_id; return caller_id;
} }
// get the ID of the main thread // get the ID of the main thread