Seguridad de subprocesos de std::shared_ptr
La declaración que citó de MSDN con respecto a la seguridad de subprocesos de std::shared_ptr puede malinterpretarse. Implica que, si bien varios subprocesos pueden leer y escribir simultáneamente distintos objetosshared_ptr, esto no garantiza la seguridad de modificar el objetoshared_ptr en sí.
TL;DR:
La seguridad de subprocesos de std::shared_ptr se refiere únicamente a la gestión de múltiples punteros que apuntan al mismo objeto subyacente. No se extiende al contenido del objeto compartido ni a las escrituras simultáneas en la instancia deshared_ptr.
Desglose:
Un Shared_ptr internamente consta de dos componentes:
Ejemplo:
En su fragmento de código, global es un puntero compartido a un objeto de configuración. El subproceso 1 copia global en su propio puntero compartido, privado. Si el subproceso 2 modificara posteriormente global, privado aún apuntaría al objeto de configuración original, ya que el bloque de control no se modifica. Sin embargo, si el subproceso 2 asigna un nuevo objeto de configuración a global, privado seguirá apuntando al objeto original.
Seguridad del subproceso de objetos puntiagudos:
La capacidad de Modificar el objeto puntiagudo a través de múltiples subprocesos depende de la implementación del objeto. En el caso de su clase de configuración, si permite escrituras simultáneas sin sincronización, como agregar o eliminar configuraciones, el código no sería seguro para subprocesos.
Solución:
Para garantizar la seguridad de los subprocesos para las modificaciones de objetos, utilice mecanismos de sincronización como std::mutex para proteger el acceso al objetoshared_ptr o al objeto compartido en sí.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3