「view this page in B3 βῆτα server」

Revisions №59614

branch: master 「№59614」
Commited by: Vikram K. Mulligan
GitHub commit link: 「b3cdcb3694e6cedc」 「№2420」
Difference from previous tested commit:  code diff
Commit date: 2017-08-04 20:00:14

Merge pull request #2420 from RosettaCommons/vmullig/threadsafe_tracers Grab-bag of thread safety fixes See issue #2419 -- this started as an attempt to fix the tracer thread-safety issue. Note that this pull request was branched off of pull request #2416, and must be merged after that one. Also: - [x] Ensuring that all tracers are `THREAD_LOCAL`. - [x] The CarbohydrateInfoManager is not threadsafe -- it lazily loads data in a non-threadsafe manner. This pull request will fix that. - [x] The same is true for the initialization of some global data related to VariantType names, also fixed here. - [x] Some instances of `std::recursive_mutex` have been switched to `std::mutex`. From what I've read, `std::recursive_mutex` should be avoided, because it encourages sloppiness. (A developer can get away with not knowing the scope over which a mutex is locked, which, at best, can lead to inefficient code with objects locked for way too long, and, at worst, can lead to very difficult-to-diagnose bugs. Misusing a `std::mutex` by trying to lock it repeatedly, on the other hand, leads to unambiguous deadlock, which is easier to diagnose.) - [x] Making the `been_accessed_` `bool` in `utility::options::Option` into a `std::atomic_bool` in compilations with `MULTI_THREADED` defined. (Issue identified by Helgrind). TODO: - [x] Run unit tests for cxx11thread build. - [x] Check integration tests for cxx11thread build. - [x] Check scoring tests for cxx11thread build. - FACTS test fails, as expected. (The FACTS global data cache pose-specific information, and are not threadsafe). All other tests pass. - [x] Beauty