Creates a thread according to the environment it's in: In environments with SupportsMultithreading: create a real thread that will tick the runnable object itself In environments without multithreading: create a fake thread that is ticked by the main thread. In environments without multithreading but that allows multithreading post-fork: If called on the original master process: will create a forkable thread that is ticked in the main thread pre-fork but becomes a real thread post-fork If called on a forked child process: will create a real thread immediately