diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp
index 0b2b59dc87f..b0ffc3a88a2 100644
--- a/core/bind/core_bind.cpp
+++ b/core/bind/core_bind.cpp
@@ -624,6 +624,10 @@ Thread::ID _OS::get_thread_caller_id() const {
return Thread::get_caller_id();
};
+Thread::ID _OS::get_main_thread_id() const {
+ return Thread::get_main_id();
+};
+
bool _OS::has_feature(const String &p_feature) const {
return OS::get_singleton()->has_feature(p_feature);
}
@@ -1398,6 +1402,7 @@ void _OS::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_thread_name", "name"), &_OS::set_thread_name);
ClassDB::bind_method(D_METHOD("get_thread_caller_id"), &_OS::get_thread_caller_id);
+ ClassDB::bind_method(D_METHOD("get_main_thread_id"), &_OS::get_main_thread_id);
ClassDB::bind_method(D_METHOD("set_use_vsync", "enable"), &_OS::set_use_vsync);
ClassDB::bind_method(D_METHOD("is_vsync_enabled"), &_OS::is_vsync_enabled);
diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h
index 25e44460498..c0339de9434 100644
--- a/core/bind/core_bind.h
+++ b/core/bind/core_bind.h
@@ -367,6 +367,7 @@ public:
Error set_thread_name(const String &p_name);
Thread::ID get_thread_caller_id() const;
+ Thread::ID get_main_thread_id() const;
void set_use_vsync(bool p_enable);
bool is_vsync_enabled() const;
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index e5f4f2f3862..285bb6ea9b0 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -271,6 +271,13 @@
This can be used to narrow down fully specified locale strings to only the "common" language code, when you don't need the additional information about country code or variants. For example, for a French Canadian user with [code]fr_CA[/code] locale, this would return [code]fr[/code].
+
+
+
+ Returns the ID of the main thread. See [method get_thread_caller_id].
+ [b]Note:[/b] Thread IDs are not deterministic and may be reused across application restarts.
+
+