Funciones C ++ Stdthread

Funciones C ++ Stdthread
La secuencia de secuencia única de un proceso se puede denominar un hilo. Los hilos se conocen con frecuencia como "procesos livianos", ya que tienen algunas características con los procesos. Una clase es representar distintos hilos de ejecución. Un solo hilo de ejecución está representado por el hilo de la clase. Múltiples funciones pueden ejecutarse a la vez debido a hilos. Cuando se crea un objeto de subproceso, comienza a ejecutar instantáneamente (sujeto a cualquier retraso de programación del sistema operativo) comenzando en la función más alta especificada como una función constructor. El valor definido del método no se tiene en cuenta y se invoca std :: terminado si sale de un error.

Tipos de hilos

La transmisión de la serie particular de un proceso se conoce como un hilo. Los hilos se denotan como procedimientos insustanciales, ya que son similares a los procesos de muchas maneras. Aunque los hilos se operan secuencialmente, parecen estar funcionando simultáneamente. Hay varios estados para cada hilo.

  • un mostrador electrónico
  • un conjunto de registros
  • un área de estante

Procesos

En esencia, los procesos son los programas que se envían desde el estado listo y programados para la ejecución en la CPU. PCB posee el concepto de proceso (bloque de control de procesos). Un proceso puede producir lo que se conoce como "procesos infantiles" o nuevos procesos. El proceso tarda más en completarse porque está aislado, lo que significa que no comparte una memoria con ningún otro proceso. Cualquiera de los siguientes estados para el proceso podría estar presente: nuevo, listo, ejecutado, esperado, terminado o suspendido.

Hilos

Un hilo es un módulo de un proceso. Un proceso puede tener varios hilos y todos esos hilos están contenidos dentro del método. Existen tres estados para un hilo: correr, listo y bloqueado. El hilo termina más rápido que el proceso, pero no se aísla como el proceso.

Las características comunes entre hilos y procesos incluyen

  • Solo un hilo o proceso puede ser operativo a la vez.
  • Ejecución sucesiva dentro del proceso.
  • La capacidad de generar niños.

Las distinciones entre procesos y hilo

  • Los procesos se autorregulan; Los hilos no son.
  • Si bien los procesos pueden ayudarse o no, los hilos están diseñados para hacerlo.

Hilo a nivel de usuario

Se pone en práctica en la biblioteca a nivel de usuario; Las llamadas del sistema no se utilizan para construirlas. La conmutación de subprocesos no requiere una llamada del sistema operativo o una interrupción del núcleo. El kernel los administra como si fueran procesos de un solo hilo ya que no es consciente del hilo a nivel de usuario.

Beneficios

  • Los únicos atributos que tiene un hilo es un espacio de pila, un puntero de pila y un registro de turno.
  • Dado que el núcleo no realiza ajustes, la creación es simple.
  • Debido a la ausencia de llamadas del sistema operativo, la conmutación de subprocesos es rápida.
  • Es compatible con sistemas operativos que prohíben.

Un hilo de nivel de núcleo

Los hilos son administrados por el núcleo. Además, el núcleo también realiza un seguimiento de los procesos utilizando la tabla de procesos convencional. El kernel del sistema operativo tiene llamadas del sistema para administrar y crear hilos.

Beneficios

  • Dado que el núcleo tiene información completa sobre los hilos del sistema.
  • El planificador puede decidir otorgar procesos con una gran cantidad de hilos de tiempo adicional.
  • Bueno para bloquear regularmente programas.

Multi-subprocesos:

Otro nombre para un hilo es un proceso liviano. Al romper un proceso en varios hilos, el paralelismo está destinado a ser logrado. Por ejemplo, muchas pestañas en un navegador podrían representar varios hilos. MS Word utilizan múltiples hilos, incluida una para procesar entradas y otro para formatear el texto.

Definir una función de hilo ()

Un hilo de clase se refiere a un hilo particular de implementación. En C ++, el término "clase de hilo" se refiere a la clase std :: hilo. Una vez que se ha creado el objeto de subprocesos vinculados, el método de nivel superior que se suministró como parte del acuerdo de constructor de funciones es donde comienza la ejecución del hilo. El código de implementación que debe invocarse recibirá un nuevo objeto de subproceso que se ha creado para iniciar un hilo.

Como se dijo anteriormente, el hilo STD :: se requiere para iniciar un nuevo hilo y el hilo también debe ser llamable. Un llamable es un programa que debe ejecutarse cuando el hilo está activo. En otras palabras, si se requiere un nuevo hilo, se debe suministrar una llamada como argumento al constructor de un objeto para std :: hilo. Después de eso, el hilo recién generado comienza y se ejecuta la función proporcionada.

Procesos vs hilos

La principal distinción es que, mientras que los procesos se ejecutan en diferentes áreas de memoria, los hilos dentro de un solo proceso de memoria compartida. Debido a que los hilos no son completamente independientes entre sí, al igual que los procesos, comparten sus recursos del sistema operativo, sección de código y sección de datos con otros hilos.

Los hilos tienen ventajas sobre los procesos

  • Capacidad de respuesta: si un proceso se divide en numerosos hilos, la salida de cada hilo se puede devolver tan pronto como haya terminado de funcionar.
  • Interruptor de contexto más rápido: los interruptores de contexto entre hilos ocurren más rápido que los interruptores de contexto dentro de un proceso. La CPU tiene que hacer más gastos generales debido a los cambios de contexto del proceso.
  • Uso efectivo del sistema multiprocesador: si un proceso contiene muchos hilos, podemos programar esos hilos en diferentes procesadores. Como resultado, sería una ejecución de proceso más rápida.
  • La comunicación se ve facilitada por el hecho de que varios hilos comparten un espacio de dirección. Mientras que en proceso, debemos adherirnos a un método de comunicación particular para la comunicación de dos procesos.
  • Compartir recursos: todos los hilos dentro de un proceso pueden compartir recursos como código, datos y archivos.
  • Capacidad del sistema aumentado: cuando una tarea se separa en varios subprocesos, cada operación de hilo se trata en función, lo que aumenta el número de métodos realizados en una cantidad de tiempo determinada mejora la capacidad del sistema.

Función de hilo en c++

En un sistema operativo, proporcionan (POSIX Hilo) para las funciones, esas funciones relacionadas con las funciones. Podemos hacer muchos hilos de esta manera para admitir el flujo de procesos concurrentes. Funciona mejor en sistemas con varios procesadores o núcleos, donde la velocidad de ejecución se puede lograr mediante la implementación de subprocesos a nivel del núcleo. Las ganancias también se pueden realizar en sistemas con un solo procesador aprovechando IO u otros servicios del sistema que tienden a detener los procesos.

Función create ()

pthread_create: nuevo hilo Crear

Parámetros

  • Tema: un puntero a un valor entero sin firmar que contiene la ID de subproceso del hilo más reciente que se inició.
  • ATTR: Atributos de un hilo, como su estado separado, estrategia de programación, dirección de pila, etc., se definen por una estructura llamada ATTR. Para las propiedades de subproceso predeterminadas, establezca en NULL.
  • Rutina de inicio: un puntero a la subrutina inicial de un hilo. La función solo tiene un atributo, pero se debe usar una estructura si se debe suministrar más de un valor a la función.
  • Arg: Un puntero a un vacío que contiene un puntero a los parámetros de la función según lo dispuesto por el argumento anterior.

Función de salida ()

pthread_exit: se usa para dejar de usar un hilo

Parámetros
Revelar, un puntero a un entero que contiene el estado de retorno del hilo es un parámetro requerido para este procedimiento. Cualquier hilo que espera unirse a este hilo debe poder ver el estado de retorno porque el alcance de esta variable debe ser global.

Función unir ()

pthread_join: se usa para salir del hilo que espera

Parámetros

  • TH: El hilo está esperando el identificador del hilo.
  • Return de hilo: un puntero a la ubicación donde se guarda el hilo descrito en el estado de salida.

Función igual ()

pthread_equal: determina si dos hilos son o no similares. La función devuelve un número distinto de cero si los dos subprocesos son iguales, de lo contrario cero.

ST :: Creación de hilos

En C ++, los hilos se construyen usando la clase STD :: HIRED. Un hilo es un flujo de ejecución único; Es similar a que un ayudante termine una tarea mientras terminas otra simultáneamente. Una vez que se ha ejecutado todo el código del hilo, se detiene. Al establecer un hilo, se debe pasar algo para ejecutarse en él. Los objetos enumerados a continuación se pueden pasar a un hilo.

Tipos de miembros

ID: ID de hilo (público)
National_handle_type: national_handle_type (público)

El hilo habilita la ejecución simultánea de múltiples tareas. En C ++, el término "clase de hilo" se refiere a la clase std :: hilo. Se debe generar un nuevo objeto de subproceso para iniciar un hilo y debe suministrarse al código de ejecución que debe llamarse. El método de nivel superior que se suministró como parte del acuerdo de constructor de funciones es donde comienza la ejecución de subprocesos después de que se ha creado el objeto de subprocesos vinculados.

Callable Utilizando objeto

Se podría hacer llamable un objeto utilizando este método. Para eso, se requiere una clase y el operador () debe sobrecargarse dentro de esa clase. El software que tiene que ejecutarse cuando se forma el hilo se incluye en los métodos sobrecargados.

Callable utilizando puntero

Se realizará un puntero invocable utilizando este método. En el objeto de subproceso, la lista de parámetros o argumentos enviados al método aparece junto al nombre de la función.

Llamable usando el puntero de la función

Darlo al objeto de hilo para la ejecución logra el resultado deseado. El constructor de función del objeto de hilo recibe una expresión de lambda llamada "LM" como su primer argumento antes de recibir sus argumentos como su segundo argumento.

Discutamos diferentes ejemplos de funciones de hilo std ::.

Ejemplo 1

En este caso, utilizaremos un hilo con un puntero.

#incluir
#incluir
prueba de clase

público:
void ejecute (comando std :: string)

para (int i = 0; i < 8; i++)

std :: cout<

;
int main ()

Test * testPtr = new test ();
std :: hilo th (& test :: ejecute, testPtr, "valores");
th.unirse();
Eliminar TestPtr;
regresar 0;

Primero, incluimos los archivos de encabezados y en el programa. Creamos la clase y especificamos su nombre 'prueba'. Luego, utilizamos el método público y ejecutamos el comando de cadena. Después de ejecutar el comando de cadena, solicitaremos el bucle y el incremento (0 a 8). Aquí, empleamos la declaración de 'Cout'. A continuación, llamamos a la función principal (). Junto con esto, llamamos a la clase 'prueba' y usamos un puntero en ella. A continuación, el hilo pasa el puntero. Luego, hemos estado utilizando la función Join (), eliminar el puntero de prueba e ingresar 'return 0'.

Ejemplo 2

En este caso, utilizaremos un hilo sin un puntero.

#incluir
#incluir
nombre de la clase

público:
Prueba de vacío estático (comando std :: string)

para (int i = 0; i < 3; i++)

std :: cout<

;
int main ()

std :: hilo th (y nombre :: prueba, "nombre");
th.unirse();
regresar 0;

Use archivos de encabezado y . Crear una clase y el título de la clase es 'nombre'. Utilizamos el método público y la siguiente línea usa una función de miembro estático y aquí pasamos la cadena. Use el bucle 'for' e inicialice los valores de 0 a 3. La declaración 'cout' se está utilizando para representar el valor. En la siguiente línea, invocamos la función Main (), usamos hilo y pasamos los valores sin usar un puntero. A continuación, usamos la función Join () e ingresamos 'return 0'.

Ejemplo 3

Aquí vamos a aplicar el operador vacío.

#incluir
#incluir
usando el espacio de nombres STD;
Laboratorio de clases
público:
Operador void () (int a)

para (int i = 0; i < a; i++)
cout << "Number of threads :" << i << "\n";

;
int main ()

hilo t2 (lab (), 6);
T2.unirse();
regresar 0;

En este código, integramos los archivos de encabezado requeridos , . Utilizamos el espacio de nombres estándar como STD. Agregamos una clase llamada 'laboratorio' y usamos su método público. Luego, emplee el operador vacío e inicialice una variable 'A' en él. Aquí, emplearemos el bucle 'for' de 0 al valor de la variable 'a'. Además, imprimiremos una declaración "Número de hilos" utilizando la declaración 'Cout'. Invocamos la función principal (). Dentro de esto, se declarará un hilo que tiene el valor 6. Cuando un hilo recibe una llamada, ejecuta un código y muestra el mensaje en la pantalla.

Conclusión

En esta guía, hablamos sobre el hilo en las funciones de C ++. Luego, observamos diferentes funciones de hilo en c++. Definimos el hilo y también sus tipos. Además, mencionamos diferentes parámetros del hilo. Hemos ejecutado numerosos tipos de códigos. En el primer código, utilizamos un hilo con un puntero, es una función de miembro no estático. En segundo lugar, en código usamos hilo sin puntero, es una función de miembro estático. Tercero y último código, utilizamos el operador Void y cuando un hilo obtuvo el valor que mostró el mensaje en la pantalla.