When it is defined they will be declared by the __external_threading header instead.
Details
- Reviewers
mclow.lists EricWF michaelplatings - Commits
- rGf3a5f2397d67: Merging r369537: --------------------------------------------------------------…
rL369639: Merging r369537:
rGe2b200b7bfa1: [libcxx] Only declare contents of threading API when…
rCXX369537: [libcxx] Only declare contents of threading API when
rL369537: [libcxx] Only declare contents of threading API when
Diff Detail
Event Timeline
It looks like if _LIBCPP_HAS_THREAD_API_PTHREAD is defined then with this change you'll be missing everything between lines 115 and 210.
Addressed Michael's comment by not moving the initial:
#endif // defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
Instead adding a separate block with:
#if !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
further down.
So that these things are still present with pthreads.
This seems to work for me (pthreads and nothreads).
In general, I think we're playing "whack-a-mole' with this chunk of code, and I've become fairly unhappy with it.
I'll be doing some cleanup here after the release goes out.
I don't fully understand this patch. The point of always declaring the interface was to enforce that it matches exactly what we expect. I'll grant that probably wasn't working, but can you explain more about?