pokché
Sé acerca de la serialización de objetos y cómo se guardan en el disco, pero ¿qué significa realmente la serialización de subprocesos? ¿Alguien podría ayudarme en esto y señalarme la dirección correcta, por favor?
amén
Tienes razón en que estos son dos significados diferentes de serialization
. Estás familiarizado con serialización de datos que es convertir una estructura de datos en un flujo de bytes en alguna representación canónica. En subprocesos múltiples, el término serialización significa exclusión mutua para sincronización de subprocesos o procesos lo que significa que solo un subproceso puede operar en una estructura de datos a la vez. C ++ 11 proporciona serialización entre subprocesos utilizando un std::mutex
#include <mutex>
std::mutex file_io_mutex;
{
std::lock_guard<std::mutex> guard(file_io_mutex);
std::out << "Only one thread at a time will execute this line." << std::endl;
}
Esto es un ejemplo de La adquisición de recursos es inicialización (RAII) donde el recurso se adquiere e inicializa al mismo tiempo, y se libera cuando sale del alcance (la ejecución alcanza el paréntesis cerrado). Este es un modismo común, asegura que el mutex se libere incluso si el código arroja una excepción antes de llegar al final del bloque.
-
¡¡GUAU!! esto responde a mi pregunta con lucidez.. eres genial amdn
– pokché
1 de febrero de 2013 a las 21:09
-
¡Me alegro de que lo hayas encontrado útil!
– amdn
1 de febrero de 2013 a las 21:16
Serializar en realidad significa publicar en forma de serie, como uno tras otro. Entonces, la serialización de subprocesos significa asegurarse de que un determinado conjunto de eventos ocurra en una secuencia, no al mismo tiempo.
Por lo tanto, un montón que tiene acceso a subprocesos serializados significa que las llamadas al montón se realizarán en el orden en que se realizan y en realidad no se realizarán al mismo tiempo. Esto probablemente se hace por medio de un bloqueo global.
-
Este. Muchos compiladores/CPU optimizan el código reordenando las instrucciones para evitar bloqueos y las cachés L1 suelen ser específicas de subprocesos/núcleos. El acceso serializado a la memoria por varios subprocesos generalmente significa descartar estas optimizaciones en escenarios específicos donde el orden en que los subprocesos acceden a la memoria es fundamental para preservar la integridad de los datos.
– Androide Darth
1 de febrero de 2013 a las 20:24
karlphillip
Sin saber el contexto específico en el que le dijeron esto, supongo que se refiere al desarrollo de una aplicación de un solo subproceso que simula un sistema de subprocesos múltiples utilizando una cola de mensajes.
Esto me lleva de vuelta a los viejos tiempos cuando jugaba un CirculoMUD derivado. Todo el juego se implementó en un solo hilo, pero tenía que lidiar con 50-100 jugadores. simultáneamente. Me quedé bastante asombrado de cómo lograron eso.