[PATCH] D20328: [libcxx] Externally threaded libc++ variant

Asiri Rathnayake via cfe-commits cfe-commits at lists.llvm.org
Mon Jul 4 04:58:21 PDT 2016


rmaprath abandoned this revision.
rmaprath added a comment.

Reason for abandoning: This patch uses opaque pointers to delegate `std::mutex` and `std::condition_variable` types to the underlying platform implementation.

This creates problems given that these two types have `constexpr` constructors. We must make `std::mutex::lock()` (and the like)  initialize the internal opaque pointer type before it is used (cannot initialize from the constructor), which in turn implies that the `std::mutex::lock()` method could fail if the implementation cannot allocate memory to hold the underlying platform mutex type - this is not a valid condition for the `std::mutex::lock()` method to fail. Besides, with this workaround, we are essentially trying to beat the purpose of a `constexpr` mutex constructor (be able to statically declare a mutex and use it without any explicit initialization).

After discussion with @mclow.lists, we think it's best to have `libc++` vendors know the underlying mutex / condition variable types in advance (`libc++` build time). I will create a new patch to implement this approach soon.


http://reviews.llvm.org/D20328





More information about the cfe-commits mailing list