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.
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
Las distinciones entre procesos y hilo
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
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
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.
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.
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.
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
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
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.