¿Cómo lograr la programación multihilo shell en Linux

  

Linux en la programación multiproceso tiene que mejorar la respuesta de las aplicaciones, los sistemas multi-cpu más efectivo, etc., siguiendo pequeñas series se comunicará con usted en el ejemplo de la programación multihilo shell de Linux bajo proceso de programación multihilo, juntos bajo la comprensión de la misma.

#! /Bin /bash

# — — — — — — — — — — — — — — — — — — — — — — — — — — — –

# este ejemplo muestra una simulación de comandos multi-hilo una habilidad
con la espera, lee

# esto habilidades se utilizan a menudo para comprobar varios hosts, como inicio de sesión ssh, ping y por lo que este proceso es relativamente lento y no gastar un solo caso de la CPU

# también se describe el control de multiproceso

# — — — — — — — — — — — — — — — — — — — — — — — — — — — –

función a_sub

{

# una función definida aquí como una rosca (subproceso)

sueño 3 # hilos efecto es 3s sueño

}

tmp_fifofile = " /tmp /$ FIFO y ". mkfifo $ tmp_fifofile # Crear un archivo de tipo FIFO

exec 6 "" punto $ tmp_fifofile # FD6 del tipo FIFO

rm $ tmp_fifofile hilo = 15 # número de hilos definidos en este documento

para

((i = 0; i "$ hilo; i ++)); hacer eco

hecho"  $ hilo se coloca de hecho un retorno de carro

en el FD6 para

( (i = 0; i "50; i ++)); hacer # 50 ciclos, 50 puede entenderse como un huésped, o de otro

leer -u6 # un comando -u6 leer una vez, de FD6 restando un carruaje, y luego realizar abajo,

# FD6 no cuando el carro se detuvo en esto, el número de hilos con el fin de lograr el control

# {sub aquí proceso iniciado, está en el fondo

a_sub &&

{# proceso hijo en el presente documento pueden usarse para determinar la lógica

echo " a_sub está terminado y "

}

| |

{Echo " sub error y "

}

echo " después del final del proceso cuando, en FD6 de nuevo por un retorno de carro, es decir, hasta en el -u6 menos lectura que

}

&#hecho de espera de espera para todos los antecedentes subproceso termina

exec 6 "&- # estrecha salida DF6 0

Descripción:

comandos de este programa

mkfifo tmpfile

y los comandos de Linux

mknod tmpfile p

eficiente? La misma fruta. La diferencia es mkfifo el estándar POSIX, se recomienda usarlo. Este comando crea la primera en su archivos de tubería de primera fuera y asignar el identificador de archivo 6. Tubo de archivos es una forma de comunicación entre procesos, es importante tener en cuenta que este es un

exec 6 "" $ # tmp_fifofile FIFO tipo de punto FD6

Si no hay una frase en el archivo $ tmp_fifofile o &6 para escribir datos, el programa se bloqueará hasta que los datos de lectura se leen fuera de la tubería hasta que el archivo. La aplicación de la frase anterior después de que usted puede seguir para escribir datos en FIFO sin bloquear tipos de archivos durante la ejecución del programa, y ​​los datos se guardarán para el programa de lectura lee.

ejecutando el comando: tiempo

. /multithread.sh "/dev /null

final de tiempo de funcionamiento: 50/15 = 3 grupos (n = 15) + 1 grupo (5" un grupo que consiste de 15) = 4 grupos, cada grupo lleva tiempo : 3 segundos,

es de 3 * 4 = 12 segundos.

no roscada código de tiempo de cálculo convencional: 50 * 3 = 150 segundos.

Lo anterior es un ejemplo de programación multi-hilo debajo de la caja de Linux introdujo, el uso de la programación multi-hilo también puede mejorar la estructura del programa, amigos interesados ​​pueden desear intentarlo.

Copyright © Conocimiento de Windows All Rights Reserved