GNU/Linux >> Tutoriales Linux >  >> Linux

¿El acceso al montón está serializado?

new y delete son seguros para subprocesos

Se requieren las siguientes funciones para ser seguro para subprocesos:

  • Las versiones de biblioteca de operator new y operator delete
  • Versiones de reemplazo de usuario de global operator new y operator delete
  • std::calloc , std::malloc , std::realloc , std::aligned_alloc , std::free

Las llamadas a estas funciones que asignan o desasignan una unidad de almacenamiento en particular ocurren en un solo pedido total, y cada llamada de desasignación ocurre antes de la próxima asignación (si la hay) en este orden.

Con gcc, new se implementa delegando a malloc , y vemos que su malloc de hecho usa un candado. Si le preocupa que su asignación cause cuellos de botella, escriba su propio asignador.


La respuesta es sí, pero en la práctica es generalmente no es un problema. Si es un problema para usted, puede intentar reemplazar su implementación de malloc con tcmalloc que reduce, pero no elimina la posible contención (ya que solo hay 1 montón que debe compartirse entre hilos y procesos).

TCMalloc asigna a cada subproceso una caché local de subprocesos. Las asignaciones pequeñas se satisfacen desde la memoria caché local de subprocesos. Los objetos se mueven desde estructuras de datos centrales a una caché local de subprocesos según sea necesario, y se utilizan recolecciones de basura periódicas para migrar la memoria de vuelta desde una caché local de subprocesos a las estructuras de datos centrales.

También hay otras opciones como usar asignadores personalizados y/o contenedores especializados y/o rediseñar su aplicación.


Linux
  1. ¿Cómo acceder al historial sobre la marcha en Unix?

  2. ¿Por qué la eliminación de Iptables "rompió" el acceso a la red?

  3. ¿Cómo acceder al último argumento de un comando comentado?

  4. Cómo acceder a la interfaz de Webmail en cPanel

  5. ¿Cómo accedo al Panel de Control?

Cómo restringir el acceso a los editores de ONLYOFFICE a los usuarios de tu instancia de Nextcloud

Cómo limitar el acceso del usuario al sistema Linux

Ssh Port Forward para acceder a la máquina doméstica desde cualquier lugar?

Acceso a los registros de acceso sin procesar en cPanel

No se puede obtener el acceso SSH para un nuevo usuario

¿Cómo accedo al volumen adjunto en Amazon EC2?