If you look in the source of the open62541 library, you can see that UA_Server_writeValue() in fact calls __UA_Server_write() which does lock (acquire) the mutex in the server session before attempting to access anything in the session, and releases it afterwards.
So yes it is thread safe, by protecting the server session from concurrent access, but you have to watch out to avoid mutual exclusions.