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



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to