This is what the RunLocked methods are for.
When two (or more) threads, including the main thread, call the same Sub then the Sub should be invoked via RunLocked to avoid the Sub being entered twice at the same time by different threads.
Try something like :
Thread1.Runlocked2("ModuleName_objectexist", name,module)
Note that all the threads that invoke this method must RunLock it on the same Thread object, not use their own RunLocked method. The Thread on which RunLocked is invoked is acting as the object that is locked preventing other threads accessing the Sub until RunLocked has returned to the first caller.
Also note that RunLocked is a normal call and runs on the thread that called it so, as usual, don't touch any GUI elements in a Sub run by RunLocked unless you have invoked RunLocked directly or indirectly from a Thread event or by CallGuiSub in BasicLib.