How can I get the currently running Thread? (Or equally useful to me, its id?)

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Charlie

I can create a new Thread object and get a unique id string for it, but how can I get the currently running thread or its unique id string? Or equally useful for my purposes, how can I test if the currently running thread == a particular Thread that I’ve created?

I’m asking because I believe I can implement a particular function in a thread-safe way without locks, but only if I can evaluate what thread is calling the function.

There is an OS.set_thread_name(), but no get_thread_name(). I guess this is the string that I would get if I used Thread.get_id(), but haven’t tested this. In any case, I don’t want to change any thread names, just look at them from running code.

:bust_in_silhouette: Reply From: wyattb

Maybe you can save the thread id in the function itself.

func _button2_pressed(thread):
	var thid=thread.get_id()
	print("idx:",thid)

func _on_Button_pressed():
	var thread=Thread.new()
	var id=thread.start (self, "_button2_pressed", thread)
	
	var thread1=Thread.new()
	var id1=thread1.start (self, "_button2_pressed", thread1)

Thanks! This will work if there really isn’t a more direct way.

Charlie | 2018-09-28 12:21

:bust_in_silhouette: Reply From: ChromiumOS
OS.get_thread_caller_id()

wierd but it works all the same

FYI:
I’m answering so random people who stumble on this post (you) get an answer because this post is 4 years old and i doubt the guy didn’t find his answer

I had a workaround but this answer is still useful for me. Thank you! (I guess this method appeared sometime since Godot 2.x.)

Charlie | 2022-08-07 17:29