The consensus for programming languages (not just C++) is that the granularity of locking single member function calls with a mutex is typically too small for real-world applications. You need transactions spanning several calls to the same and/or different containers and data structures to get again a valid state.

 

Protecting all individual member functions just for the duration of the call would not be thread-safe.

 

Doing it in addition to another overarching mutex would be worse performance-wise and could lead many developers into a false sense of security. So they would assume the code is thread-safe, when actually it is not.

 

Java did it wrong once in the past, but then reversed course.
 

-----Ursprüngliche Nachricht-----
Von: David G. Pickett via Std-Proposals <std-proposals@lists.isocpp.org>
Gesendet: Fr 23.02.2024 18:21
Betreff: Re: [std-proposals] High Performance Thread-Safe C++
An: std-proposals@lists.isocpp.org;
CC: David G. Pickett <dgpickett@aol.com>;
It'd be nice if the language had a way to say that a particular container *instance* needs to be thread safe, so all methods are mutex protected.  The developer could add a reserved word in the declaration.  This way, users are not accidentally using a mutex unnecessarily.  The compiler can add the mutex lock to all methods when invoked, somewhat like a MACRO but less global.  We don't want to be like Java, and have to remember which container name is synchronized, e.g ArrayList, Vector; StringBuffer, StringBuilder, or hve duffers using a synchronized container when not needed.
-- 
 Std-Proposals mailing list
 Std-Proposals@lists.isocpp.org
 https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals