This is a resubmit of r210600 (Differential Revision D4076). This probably only needs a quick glance since the previous change was already reviewed, however this change differs from the previous submission in 2 important ways:
- Conversions from sys::Mutex to std::[recursive_]mutex are removed, to reduce the scope of the changes. Those will be submitted later as a separate changelist.
- Making ErrorHandling.cpp thread-safe was handled as a separate changelist (see D4140)
This (and the related change to the interface) is the other unrelated cleanup that I would like to see separated out from the change which has policy effect.
Consider, if we need to revert the runtime control of multithreading for a brief period because something breaks, we shouldn't also lose this cleanup change.