una claseSólo se puede crear un objeto, el patrón de diseño de dicha clase se llama patrón singleton, que garantizaen el sistemala claseSólo puede haber una instancia(yCompartir procesos entre padres e hijos), una clase singleton típica es el grupo de memoria de C++ STL
Las ideas básicas de diseño del modo singleton de C++:
privatizaciónConstructor, elimina el valor predeterminadoconstructor de copiasysobrecarga del operador de asignaciónEvitar que los objetos se creen y copien directamente
El sistema operativo puede liberar los recursos de memoria del objeto singleton o personalizar el destructor para completar operaciones especiales.
2. Dos implementaciones del modo singleton
modo hombre hambriento
Clase soltera hambrienta en el programa.antes de entrar a la función principalcrea una instancia única de
HungerSingletondevariable miembro estáticaSíun objeto (o puntero) de su propio tipo,Categoríavariable miembro estáticaLa inicialización se completa antes de ingresar a la función principal. Dado que el constructor está privatizado, no se pueden crear objetos de esta clase durante la ejecución del programa.
Ventajas del modo Hungry Singleton:
porqueLos procesos secundarios solo se pueden crear en la función principal., entonces la clase singleton hambrientaNo hay problemas de seguridad de subprocesos, sin competir por los recursos del sistema con clases de otros subprocesos, enEn un entorno multiproceso de alta concurrenciaCapaz de realizar tareas de manera más eficiente.
Desventajas del patrón Singleton hambriento:
Si hay varias clases singleton en un programa,sin control sobre su orden de inicialización
La clase singleton hambrienta ralentizará la velocidad de inicio del programa e incluso si no se utiliza la clase, se creará una instancia, lo que puede provocar un desperdicio de memoria.
modo perezoso
clase singleton perezosa en el programaDespués de ingresar a la función principalDepende del código posterior decidir si se crea una instancia
LazySingletonGetinstance()La clase creará una instancia cuando se llame a la interfaz miembro por primera vez.
Ventajas del patrón singleton perezoso:
capaz de controlarEl orden de inicialización de varios objetos de clase singleton diferidos.y solo se crea cuando es necesario, evitando el desperdicio de memoria
Desventajas del patrón singleton perezoso:
Hay problemas de seguridad de subprocesos en un entorno de subprocesos múltiples y se requieren bloqueos