Understanding Lock in Audio Thread

On the contrary.
Host automation has to be in sync with the audio, hence parameters are set immediately before each processBlock() call. Some have a bespoke thread, but usually it is the audio thread.
It has to be that way, because the message thread would be way too slow in an offline bounce situation.

The message thread comes into play, when the user changes the parameter from the plugin editor. This can only occur in a real time situation, and it cannot be avoided that the GUI reaction is not synchronised with the audio on a sample level.

This is an ongoing discussion and afaik there is no proper solution (I haven’t read the proposal of the last post):