I am not 100 % sure, but I think using signals with multiple threads you will need some form of synchronization mechanism (not thread safe) if your signal is handling involves a critical part of code. So if your signal handling does not affect anything related to the main thread, it's fine. Otherwise, if your signal handling is managing a resource that the main-thread also shares, you will need some form of syncrhonization.
FYI: I use call_deferred("emit_signal","signalName")
when I need the main-thread to handle a signal emitted by a thread