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

Hi,

struct MyParams {
	double v1;
	bool v2;
};

class Processor : public AudioEffect
{
//....
	std::atomic<MyParams*> setStateParams;
	std::atomic<MyParams*> toDeleteParams;
	MyParams processParams;
};

tresult process (ProcessData& data)
{
	auto stateParams = setStateParams.exchange (nullptr);
	if (stateParams)
	{
		processParams = *stateParams;
		auto test = toDeleteParams.exchange (stateParams);
		assert (test == nullptr);
	}
//....
}

void cleanupMemory()
{
	auto toDelete = toDeleteParams.exchange (nullptr); // cleanup memory
	if (toDelete)
		delete toDelete;
	toDelete = setStateParams.exchange (nullptr); // cleanup memory
	if (toDelete)
		delete toDelete;
}

tresult setState (IBStream* stream)
{
//....
	cleanupMemory ();
	// allocate new state
	auto stateParams = new MyParams;
	// read state from stream into stateParams !
	setStateParams.exchange (stateParams);
}
tresult setActive (bool state)
{
	if(!state)
		cleanupMemory ();
}

Coded out of my head, so typos may very well happened.
I hope this makes it clear.

Cheers,
Arne.