+1 for this, curious. I’ve generally found that calling UE_LOG from different threads gives an expected response (make sure the variables you bind to UE_LOG are safely accessed though or copied), but it would be good to get some answer on what the best practices are.
Yes, I’m new to unreal and so am very interested in best practices! Interestingly, if it is thread safe, then that would also mean it’s probably best to avoid it in performance critical code, since it would likely compete with other threads for a mutex.
The answer is “it depends.” Each FOutputDevice can overload CanBeUsedOnAnyThread() to indicate whether it’s threadsafe or not. Typically if it’s expected to be called from a particular thread it will assert with check(AllowedThreadId == GetThreadId());