Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Las listas en STL son seguras para subprocesos?

¿Las listas en STL son seguras para subprocesos?

¿Estás hablando de Java o C?

Por lo general, hay dos formas de resolver este problema en Java

Una: usar la palabra clave sincronizada;

Dos: usar Collections.synchronizedList();

Dos: usar Collections.synchronizedList();

p>

Supongamos que crea el siguiente código: Listlt; .String, Objectgt; gt; data=new ArrayListlt; Para resolver el problema de seguridad de subprocesos, puede usar Collections.synchronizedList() de esta manera. )

Por ejemplo,

Listlt; Maplt; String, Objectgt; data=Collections.synchronizedList(new ArrayList()). sincronizadoList(new ArrayListlt; Maplt; String, Objectgt; gt; ());

Simplemente cambie las nuevas palabras clave y no habrá otros cambios. Puede consultar la documentación de la API para aprender a usar. it;

Hay dos tipos de listas en C:

Una es una estructura de datos de lista que implementa manualmente y la otra es una estructura de datos de lista que STL encapsula para usted.

Si lo implementas manualmente, envía el código fuente y te ayudaré a descubrir cómo optimizarlo.

Si se implementa en stl

entonces no puedes esperar que STL te brinde soporte de subprocesos porque necesita eficiencia.

Cosas a tener en cuenta:

1. Es seguro leer varios hilos. Varios subprocesos pueden leer el contenido del contenedor simultáneamente. Sólo se puede leer, no escribir.

2. Las escrituras múltiples en diferentes contenedores son seguras. Varios subprocesos pueden escribir en diferentes contenedores al mismo tiempo. Tenga en cuenta que son contenedores diferentes.

Por lo tanto, debe escribir su propia clase de plantilla para que el contenedor implemente el bloqueo (bloqueo en construcción, liberación en destrucción) y luego definir variables temporales de esa clase al acceder al contenedor. Las variables temporales garantizan que cuando se produce una excepción, el objeto temporal también se destruya, liberando así el bloqueo.