Multi-thrading crash fixes

As per the checkin comment:

SimdXContext::_fileName was a reference to a static std::string.  Two threads,
which each have their own SimdXContext, could simultaneously try to assign a
new value to _fileName, meaning they would simultaneously try to assign a new
value to the same static string.  In this case the assignment operation in each
thread would attempt to free the storage for the old value and you would get
the "double free" error.