Seguridad para subprocesos en la biblioteca estándar de C++

Las siguientes normas de seguridad de subprocesos se aplican a todas las clases de la biblioteca estándar de C++, lo que incluye shared_ptr, como se describe a continuación. A veces se proporcionan garantías más sólidas, por ejemplo, los objetos iostream estándar, como se describe a continuación, y los tipos diseñados para multithreading, como los de <atomic> .

Un objeto es seguro para subprocesos para leer desde múltiples subprocesos. Por ejemplo, dado un objeto A, es seguro leer A desde el subproceso 1 y desde el subproceso 2 simultáneamente.

Si un subproceso está escribiendo un objeto, todas las lecturas y escrituras a este objeto del mismo subproceso o de otro deben protegerse. Por ejemplo, dado un objeto A, si el subproceso 1 está escribiendo a A, debe evitarse que el subproceso 2 lea o escriba en A.

Es seguro leer y escribir en una instancia de un tipo incluso si otro subproceso está leyendo o escribiendo en una instancia diferente del mismo tipo. Por ejemplo, dados los objetos A y B del mismo tipo, es seguro cuando A se escribe en el subproceso 1 y B se lee en el subproceso 2.

shared_ptr

Varios subprocesos pueden leer y escribir objetos diferentes shared_ptr simultáneamente, incluso cuando los objetos son copias que comparten la propiedad.

iostream

Los objetos iostream estándar , , , , , , y siguen las mismas reglas que las otras clases, con esta excepción: es seguro escribir en un objeto desde varios cincoutcerrclogwcinwcoutwcerrwclog subprocesos. Por ejemplo, el subproceso 1 puede escribir en cout al mismo tiempo que el subproceso 2. Sin embargo, esto puede causar que la salida de los dos subprocesos se combine.

Nota

Leer desde un búfer de secuencia no se considera una operación de lectura. En su lugar, se considera una operación de escritura porque se cambia el estado de la clase.

Vea también

Información general de la biblioteca estándar de C++