GNU/Linux >> Tutoriales Linux >  >> Linux

C ++ nuevo operador de seguridad de subprocesos en linux y gcc 4

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).


Linux
  1. Linux:¿directorios estándar y/o comunes en sistemas operativos Unix/linux?

  2. 7 Ejemplos de operadores Linux Grep OR, Grep AND, Grep NOT

  3. ¿Cómo nombrar un hilo en Linux?

  4. Enviar y recibir un archivo en programación de socket en Linux con C/C++ (GCC/G++)

  5. ¿Macros para GCC/G++ para diferenciar Linux y Mac OSX?

Lanzamiento de Linux Mint 19.2 "Tina":esto es lo nuevo y cómo obtenerlo

Linux Kernel 5.9:Novedades y cómo actualizar

Cómo compilar C, C++ y Java usando Terminal en Linux

Cómo compilar y ejecutar programas C, C++ en Linux

Cómo crear y administrar nuevos usuarios en Linux

Cómo instalar y usar el compilador GCC en el sistema Linux