Generalmente el new
operator es seguro para subprocesos; sin embargo, las garantías de seguridad de subprocesos para llamadas a STL y la biblioteca estándar se rigen por el estándar; esto no significa que no tengan en cuenta los subprocesos; tienden a tener garantías de seguridad de subprocesos muy bien definidas para ciertas operaciones. Por ejemplo, iterar a través de una lista de solo lectura es seguro para subprocesos para múltiples lectores, mientras que iterar a través de una lista y realizar actualizaciones no lo es. Tienes que leer la documentación y ver cuáles son las diversas garantías, aunque no son tan onerosas y tienden a tener sentido.
Si bien estoy hablando de conceptos que no he usado, creo que debo mencionar que si está usando memoria compartida, entonces probablemente quiera asegurarse de usar solo tipos de POD y usar la ubicación nueva.
En segundo lugar, si está utilizando memoria compartida como se entiende comúnmente en los sistemas Linux, entonces puede estar utilizando múltiples procesos, no subprocesos, para asignar memoria y 'hacer cosas', utilizando la memoria compartida como una capa de comunicación. Si este es el caso, entonces la seguridad de subprocesos de su aplicación y bibliotecas no es importante; sin embargo, lo que es importante es la seguridad de subprocesos de cualquier cosa que use la asignación de memoria compartida. Esta es una situación diferente a la ejecución de un proceso con muchos subprocesos, en cuyo caso preguntar sobre la seguridad de subprocesos del operador new ES una preocupación válida y podría abordarse colocando new si no lo es, o definiendo sus propios asignadores.
Tendrá que buscar mucho para encontrar una plataforma que admita subprocesos pero que no tenga un subproceso seguro new
. De hecho, la seguridad de subprocesos de new
(y malloc
) es una de las razones por las que es tan lento.
Si, por otro lado, desea un STL seguro para subprocesos, puede considerar Intel TBB, que tiene contenedores compatibles con subprocesos (aunque no todas las operaciones en ellos son seguros para subprocesos).