<div dir="ltr">We already use both std::mutex and std::condition_variable in include/lldb/Utility/TaskPool.h for a while (since October) and nobody complained about it so I think we can safely assume that all platform has the necessary STL support.</div><br><div class="gmail_quote"><div dir="ltr">On Wed, May 11, 2016 at 11:44 PM Greg Clayton via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org">lldb-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It would be nice to get a patch that gets rid of the Mutex.h/Mutex.cpp and switches over to using C++11 std::mutex/std::recursive_mutex and get rid of Condition.h/Condition.cpp for std::condition_variable. Then we can be more consistent. We need to make sure the C++ standard libraries are ready on all platforms first though.<br>
<br>
Greg<br>
<br>
> On May 11, 2016, at 3:01 PM, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<br>
><br>
> I mean std::recursive_mutex is recursive<br>
><br>
> On Wed, May 11, 2016 at 3:01 PM Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<br>
> Yes, eventually we should move to std::mutex and std::condition_variable, in which case it behaves as expected (std::mutex is non recursive, std::mutex is recursive).<br>
><br>
><br>
><br>
> On Wed, May 11, 2016 at 2:20 PM Greg Clayton via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a>> wrote:<br>
> From lldb/source/Host/windows/Mutex.cpp:<br>
><br>
><br>
> Mutex::Mutex () :<br>
>     m_mutex()<br>
> {<br>
>     m_mutex = static_cast<PCRITICAL_SECTION>(malloc(sizeof(CRITICAL_SECTION)));<br>
>     InitializeCriticalSection(static_cast<PCRITICAL_SECTION>(m_mutex));<br>
> }<br>
><br>
> //----------------------------------------------------------------------<br>
> // Default constructor.<br>
> //<br>
> // Creates a pthread mutex with "type" as the mutex type.<br>
> //----------------------------------------------------------------------<br>
> Mutex::Mutex (Mutex::Type type) :<br>
>     m_mutex()<br>
> {<br>
>     m_mutex = static_cast<PCRITICAL_SECTION>(malloc(sizeof(CRITICAL_SECTION)));<br>
>     InitializeCriticalSection(static_cast<PCRITICAL_SECTION>(m_mutex));<br>
> }<br>
><br>
><br>
> It also means that Condition.cpp doesn't act like its unix counterpart as the pthread_contition_t requires that wait be called with a non recursive mutex. Not sure what or if any issues are resulting from this, but I just thought everyone should be aware.<br>
><br>
> Greg Clayton<br>
><br>
> _______________________________________________<br>
> lldb-dev mailing list<br>
> <a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev</a><br>
<br>
_______________________________________________<br>
lldb-dev mailing list<br>
<a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev</a><br>
</blockquote></div>