소스 검색

Add an `OS.get_thread_caller_id()` method

This can be used to print thread IDs in logs. This can make it easier
to debug multi-threaded applications.

Co-authored-by: Khaos <[email protected]>
(cherry picked from commit 35b046ddf7eab341256cced9d1c77e168c52e256)
Hugo Locurcio 4 년 전
부모
커밋
eb0ca31ac1
3개의 변경된 파일14개의 추가작업 그리고 0개의 파일을 삭제
  1. 5 0
      core/bind/core_bind.cpp
  2. 1 0
      core/bind/core_bind.h
  3. 8 0
      doc/classes/OS.xml

+ 5 - 0
core/bind/core_bind.cpp

@@ -647,6 +647,10 @@ int _OS::get_power_percent_left() {
 	return OS::get_singleton()->get_power_percent_left();
 }
 
+Thread::ID _OS::get_thread_caller_id() const {
+	return Thread::get_caller_id();
+};
+
 bool _OS::has_feature(const String &p_feature) const {
 
 	return OS::get_singleton()->has_feature(p_feature);
@@ -1416,6 +1420,7 @@ void _OS::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("alert", "text", "title"), &_OS::alert, DEFVAL("Alert!"));
 
 	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("set_use_vsync", "enable"), &_OS::set_use_vsync);
 	ClassDB::bind_method(D_METHOD("is_vsync_enabled"), &_OS::is_vsync_enabled);

+ 1 - 0
core/bind/core_bind.h

@@ -360,6 +360,7 @@ public:
 	bool is_ok_left_and_cancel_right() const;
 
 	Error set_thread_name(const String &p_name);
+	Thread::ID get_thread_caller_id() const;
 
 	void set_use_vsync(bool p_enable);
 	bool is_vsync_enabled() const;

+ 8 - 0
doc/classes/OS.xml

@@ -486,6 +486,14 @@
 				[b]Note:[/b] This method is implemented on Windows.
 			</description>
 		</method>
+		<method name="get_thread_caller_id" qualifiers="const">
+			<return type="int">
+			</return>
+			<description>
+				Returns the ID of the current thread. This can be used in logs to ease debugging of multi-threaded applications.
+				[b]Note:[/b] Thread IDs are not deterministic and may be reused across application restarts.
+			</description>
+		</method>
 		<method name="get_ticks_msec" qualifiers="const">
 			<return type="int">
 			</return>