Esto se trata de seguridad de hilo de std::map
. Ahora, las lecturas simultáneas son seguras para hilos, pero las escrituras no lo son. Mi pregunta es si agrego un elemento único al mapa cada vez, ¿será seguro para subprocesos?Thread-safety of C++ maps
Así, por ejemplo, si tengo un mapa como este
std:map<int, std::string> myMap
y siempre añadir nuevas claves y nunca modificar el valor de clave existente, tendrá que ser flujos seguros?Más importante aún, ¿me dará algún comportamiento aleatorio en tiempo de ejecución?
¿Agregar nuevas claves también se considera una modificación? Si las claves son siempre diferentes al agregar, ¿no debería ser seguro para subprocesos ya que modifica una parte independiente de la memoria?
Gracias Shiv
No, esto no será seguro para subprocesos, porque dos subprocesos podrían agregar dos elementos (únicos) a la vez que irían en el mismo lugar. –
El único tipo de seguridad de subprocesos que puede esperar de los contenedores estándar es que si el contenedor nunca se modifica y cada subproceso accede (lee o escribe) un elemento ** diferente **, entonces eso debería estar bien. –