Múltiples lectura es el concepto de ejecutar múltiples hilos de ejecución dentro de un solo programa. Es una característica muy útil en lenguajes de programación como C ++, ya que nos permite llevar a cabo múltiples operaciones simultáneamente. Cª++, múltiples lectura se puede lograr a través del Biblioteca, que proporciona un conjunto de clases y funciones que permiten a los desarrolladores crear, administrar y controlar múltiples hilos.
Múltiples lectura es como la multitarea. Significa que dos o más hilos se ejecutan simultáneamente. En dicho programa, cada componente se conoce como un hilo, y cada hilo especifica una ruta única de ejecución. No hay soporte incorporado para de lectura múltiple Programas anteriores a C ++ 11. En cambio, esta característica es totalmente proporcionada por el sistema operativo.
Múltiples lectura También se puede denominar dividir un programa en hilos más pequeños que se ejecutan simultáneamente. La clase de hilo, que se usa para múltiples lectura En C ++, le permite construir numerosos hilos y administrar su ejecución.
Crear hilos en c++
Para crear un hilo en C ++, usamos el std :: hilo clase, que se incluye en la biblioteca de hilos incorporada. A llamable se suministra como un argumento al constructor de un objeto de la clase std :: hilo Para generar un nuevo hilo. El código que se ejecuta cuando un hilo está activo se conoce como llamable. Cuando construimos un std :: hilo objeto, se establece un nuevo hilo, que causa el código suministrado por llamable para ejecutarse. Llamable se puede definir utilizando estos tres métodos.
Método 1: puntero de funciones
Llamable Las funciones que usan un puntero de función se pueden definir de esta manera.
FUNCIÓN VOCAL_CALL (parámetros)
Cuando la función se ha construido, un objeto de subproceso que contiene la función se genera de la siguiente manera:
std :: thread thread_obj (function_call, parámetros);
Método 2: Objeto de función
Al utilizar el objeto de función, aprovechamos la idea de sobrecarga del operador. El código que debe ejecutarse mientras se forma el hilo está contenido en la función sobrecargada.
clase Object_class
Operador void () (parámetros)
// código para ser ejecutado
;
std :: thread thread_object (object_class (), parámetros)
Método 3: expresión de lambda
Llamable Las funciones que usan una expresión de lambda se pueden definir así.
auto f = [] (parámetros)
// código para ser ejecutado
;
std :: thread thread_object (f, parámetros);
Ejemplo de múltiples lectura en c++
#incluir
#incluir
usando el espacio de nombres STD;
vacío func_thread (int n)
para (int i = 0; i < N; i++)
cout << "Thread 1 :: callable => Usando un puntero de función \ n ";
clase Thread_obj
público:
Operator void () (int n)
para (int i = 0; i < n; i++)
cout << "Thread 2 :: callable => Usando un objeto de función \ n ";
;
int main ()
auto f = [] (int n)
para (int i = 0; i < n; i++)
cout << "Thread 3 :: callable => Usando una expresión lambda \ n ";
;
hilo th1 (func_thread, 2);
Thread Th2 (Thread_obj (), 2);
hilo th3 (f, 2);
TH1.unirse();
TH2.unirse();
TH3.unirse();
regresar 0;
En el código anterior, hemos desarrollado tres hilos con tres separados calibre-un puntero de función, un objeto y una expresión de lambda. Cada hilo se inicia como dos instancias separadas. Tres hilos están activos simultáneamente y por separado, como se indica en la salida.
Producción
Ventajas y desventajas de la lectura múltiple
Se puede hacer más trabajo más rápido gracias a múltiples lectura. Esto se debe a que permite que numerosos hilos realicen varias tareas a la vez. Múltiples lectura Permite a los programadores realizar actividades de red, procesar fotos o videos, y realizar cálculos complicados sin ralentizar el resto de la aplicación. Múltiples lectura ayuda a hacer que las interfaces de usuario sean más receptivas. Al ejecutar el código que cambia la pantalla en un hilo separado, el hilo de la interfaz de usuario se mantiene libre para llevar a cabo otras tareas, como responder a la entrada del usuario. Esto da como resultado interfaces de usuario más suaves y rápidas.
Sin embargo, hay algunas limitaciones para usar múltiples lectura. Uno de los desafíos clave al trabajar con de lectura múltiple Los programas evitan las condiciones de carrera. Una condición de carrera es una situación en la que dos o más hilos intentan acceder al mismo recurso compartido al mismo tiempo, lo que lleva a un comportamiento impredecible. Para evitar condiciones de carrera, los desarrolladores utilizan técnicas de sincronización como mutexes, semáforos y barreras.
Conclusión
Múltiples lectura en C ++ es un concepto poderoso que permite a los desarrolladores crear programas que puedan realizar múltiples tareas simultáneamente. Al usar la clase de subprocesos proporcionada por la biblioteca, los desarrolladores pueden crear, administrar y controlar múltiples subprocesos. Múltiples lectura se puede utilizar para mejorar el rendimiento, aumentar la capacidad de respuesta y superar las limitaciones de los recursos del sistema. Sin embargo, debido a los desafíos involucrados en trabajar con de lectura múltiple Programas, los desarrolladores deben tener cuidado y utilizar técnicas de sincronización apropiadas para evitar condiciones de carrera.