[lldb-dev] [PATCH] Minor lldb_private::ModuleList fixes

Greg Clayton gclayton at apple.com
Mon Mar 24 13:21:23 PDT 2014


On Mar 24, 2014, at 11:36 AM, Piotr Rak <piotr.rak at gmail.com> wrote:

> Hi,
> 
> 2014-03-24 17:58 GMT+01:00 Greg Clayton <gclayton at apple.com>:
> Note that std::once can be used to enforce "run once" and we don't have to worry about each platform (like we would have to if we used pthread_once).
> 
> Modified version submitted with:
> 
> Author: gclayton
> Date: Mon Mar 24 11:50:33 2014
> New Revision: 204622
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=204622&view=rev
> Log:
> Modified patch from Piotr Rak that makes GetSharedModuleList() more thread safe and also fixed a missed member initialization on the copy contractor and also makes the assignment operator safer.
> 
> Modified:
>    lldb/trunk/source/Core/ModuleList.cpp
>  
> 
> Thanks, that's great we can use that, I have not seen any use of std::once, and that's why I was avoiding it.
> Like I avoided ranged version of for before I have noticed we already use it.
> I've seen comments about lack of atomic for Windows in debug shared_ptr implementation, and also we wrap things like mutex, condition variable, etc...
> 
> For future:
> Are there any clear guidelines what feature set form C++11 is safe to use?

I would like to eventually switch over to using all the C++11 mutex classes, but haven't gotten around to it. The C++11 mutex classes would have also solved the issue you ran into where you want to simultaneously lock two mutex objects.

> Or we shouldn't limit ourselves until someone starts screaming out loud?

We generally need to make sure MSVC implements any C++11 we need. Both GCC and clang are pretty good at C++11, but MSVC generally doesn't keep up with the standard as well.






More information about the lldb-dev mailing list