[PATCH] D19415: [libcxx][rfc] Externalized threading support
Ben Craig via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 26 07:03:53 PDT 2016
bcraig added a subscriber: bcraig.
bcraig added a comment.
Note: My opinion doesn't count for much as far as community acceptance goes.
I'm fine with the idea. I think there is at least one significant conformance hurdle that you will need to address though. I also have some commentary on the implementation details.
================
Comment at: include/__mutex_base:43
@@ +42,3 @@
+#if defined(_LIBCPP_THREAD_API_EXTERNAL)
+ mutex() _NOEXCEPT {__libcpp_os_support::__os_mutex_init(&__m_);}
+#elif !defined(_LIBCPP_HAS_NO_CONSTEXPR)
----------------
This is not C++14 conformant. The default constructor for mutex() needs to be constexpr.
I'm not sure if there is a good way around this issue given the problem you are trying to solve. There have been similar constexpr issues with this constructor with regards to musl libc.
================
Comment at: include/__os_support:23
@@ +22,3 @@
+// Mutexes
+struct __mutex_t;
+typedef struct __mutex_t* __os_mutex;
----------------
I would prefer that the internal types use an under-under-libcpp __libcpp prefix. I've had issues in the past with my under-under symbol names colliding with those from the underlying C library, especially for obvious names like under-under-mutex_t.
================
Comment at: src/algorithm.cpp:65
@@ +64,3 @@
+# elif defined(_LIBCPP_THREAD_API_EXTERNAL)
+ __rs_mut.lock();
+# else
----------------
I would rather the new branch be used across the board. I don't like littering the generic implementation files with preprocessor blocks everywhere.
Stated differently, get rid of
```
__libcpp_os_support::__os_mutex __rs_mut
```
and just use
```
mutex __rs_mut
```
everywhere instead.
================
Comment at: src/mutex.cpp:31
@@ -30,1 +30,3 @@
+#elif defined(_LIBCPP_THREAD_API_EXTERNAL)
+ __os_mutex_destroy(__m_);
#else
----------------
My preference is for all of this to hide behind the __os_mutex_destroy call, instead of having the preprocessor block here. It looks like that has already been discussed in a prior review though ( http://reviews.llvm.org/D11781 ).
http://reviews.llvm.org/D19415
More information about the cfe-commits
mailing list