Is IComponent::getState()/setState() thread-safe?

Yes you are correct.

How do you implement getState though? The process methods receives param changes (through IParameterChanges) and changes its state accordingly after which getState is called by the UI thread. How does process writes this state in a thread safe way without using locks or allocating memory?

Thanks
Yan