AudioUnit: AUParameterEvent vs AUParameterTree implementorValueObserver

Hello, I'm trying to write my own audio unit extension and I have a problem. I don't understand the difference between implementorValueObserver and AUParameterEvent. It looks like both of them can be used to update parameters in DSPKernel. It seems natural to use an observer, but it requires to think about thread safety in contrast to AUParameterEvent handling.

Can someone comment on this or give me more context about this two entities?