En cuarto lugar, los hilos de proceso, asíncrono síncrono, de no bloqueo el bloqueo de la comprensión simultánea en paralelo

I. Antecedentes

1. En el frente de unos postes del blog que tenemos para explicar una gran cantidad de conocimientos acerca de la multi-hilo, y hoy preparado para hablar con varios conceptos antes de hacer la explicación específica, con la esperanza de ayudarle, aquí llegamos a explicar en detalle hoy contenido.

2. Si usted tiene que explicar no entender, por favor deje un mensaje, puede hacer referencia a mi anterior blog de entender el conocimiento que explicamos en la actualidad. Sin tonterías comenzó a explicar hoy.

En segundo lugar, el concepto básico

1. Los procesos y subprocesos

1.1 proceso (Proceso) :. Es un concepto básico en el sistema Windows, que contiene un recurso necesario para ejecutar el programa. Una aplicación que se ejecuta es visto como un proceso en el sistema operativo, el proceso puede incluir uno o más hilos. Un hilo es la unidad básica de tiempo de procesador del sistema operativo asigna, en el proceso puede tener múltiples hilos de ejecución de código de forma simultánea. Entre los procesos son relativamente independientes, un proceso no puede acceder a los datos de otro proceso (a menos que el uso de la computación distribuida), el fracaso de un proceso que se ejecuta no afectará el funcionamiento de otros procesos, los sistemas Windows es el uso del proceso de la obra se divide en más de áreas separadas. El proceso puede ser entendido como un programa básico de la frontera. Se está ejecutando una aplicación de rutina de un proceso dinámico de la ejecución de la aplicación.

1.2 una rosca (Thread): es una unidad básica de ejecución en el proceso, es la unidad básica del sistema operativo asigna tiempo de CPU, un proceso puede contener varios hilos, el primer proceso de introducción de hilo realizada es considerado como el hilo principal de este proceso . Hilo principalmente por los registros de la CPU, pilas de llamadas, y el hilo de memoria local (almacenamiento local de subprocesos, TLS) del mismo. El expediente del estado de registro de la CPU principal que se está ejecutando el hilo, la pila de llamadas se utiliza para mantener ese hilo de la memoria y los datos, TLS se utiliza principalmente para la información de estado se almacena hilo.

1.3 diferencia entre procesos y subprocesos: La principal diferencia entre los procesos y subprocesos es que son diferentes de gestión de recursos del sistema operativo. Los procesos tienen espacio de direcciones separado, después de un proceso se bloquea, no tendrá un impacto en otros procesos en modo protegido, y el hilo es sólo un proceso de diferentes rutas de ejecución.

Hilo tiene su propia pila y variables locales, pero no hay espacio de direcciones independiente entre los hilos de un solo hilo, un hilo a troquel es equivalente a la totalidad de las matrices de proceso, por lo que el programa que los procedimientos multi-de proceso de un único subproceso robusto, pero en el proceso de de traspaso, el consumo de recursos es grande, la eficiencia es peor. Sin embargo, para algunos de los requisitos al mismo tiempo y tienen que compartir el funcionamiento en paralelo de ciertas variables, sólo con rosca, el proceso no se puede utilizar.

  • En resumen, hay al menos un programa de un proceso, un proceso tiene al menos un hilo.
  • División de hilo escalas más pequeñas que el proceso, por lo que los programas de multiproceso concurrencia alta.
  • Además, el proceso tiene una unidad de memoria separada en el proceso de aplicación, y múltiples hilos de la memoria compartida, mejorando así en gran medida la eficiencia del programa.
  • Temas en el proceso de implementación y el proceso es diferente. Cada entrada tiene un hilo separado funcionamiento, secuencias y procedimientos realizados en la salida de orden. Pero el hilo no es capaz de ejecutar de forma independiente, debe existir según la aplicación, proporcionando múltiples hilos de ejecución controlados por la aplicación.
  • Desde un punto de vista lógico, lo que significa que una sección de ejecución de programa de aplicación multi-roscado puede realizar una pluralidad de manera simultánea. Sin embargo, el sistema operativo no será visto como varios subprocesos múltiples aplicaciones independientes para lograr procesos de planificación y de gestión y asignación de recursos. Esta es una diferencia importante entre los procesos y los hilos.

2. La sincronización (Sync) y asíncrona (asíncrono)

2.1 Sincronización: La sincronización de llamada se emite cuando una llamada de función, hasta que no haya resultados, la llamada no volver o continuar el seguimiento. En términos simples, la sincronización es un debe hacer una cosa, como un frente hecho con el fin de hacer la siguiente cosa. Por ejemplo: B / S forma patrón de presentación, el proceso específico es: una solicitud presentada por el cliente -> esperar a que el proceso de servidor -> vuelve procesados, en este proceso el cliente (navegador) no pueden hacer otras cosas.

2.2 asíncrono: asíncrono y el contraste síncrono, cuando la emisión de una llamada de procedimiento asíncrono, la persona que llama hasta que no resultado, las operaciones posteriores pueden proceder. Cuando se ha completado la llamada, por lo general informa a la persona que llama a través del estado, la notificación y la devolución de llamada. Para las llamadas asíncronas, llamadas no devuelto por el control de llamadas.

Durante tres maneras de informar a la persona que llama, de la siguiente manera:

  • Estado: la de vigilar el estado de la persona que llama (sondeo), la persona que llama tiene que comprobar de nuevo a intervalos regulares, sería muy ineficiente.
  • Notificación: Cuando se ejecuta la persona que llama, la notificación informando a la persona que llama, sin consumir demasiado rendimiento.
  • Devolución de llamada: Notificación Del mismo modo, cuando se haya completado la ejecución del abonado llamado, se llamará a la función de devolución de llamada proporcionada por la persona que llama.

Por ejemplo: B / S petición ajax modo, el proceso específico es: el cliente envía una solicitud Ajax -> proceso del servidor -> procesado de devolución de llamada del cliente se ejecuta, la solicitud en el cliente (navegador), todavía puede hacer otra cosa.

2.3 diferencia síncrona y asíncrona: En conclusión, la diferencia entre síncrona y asíncrona: Después de que la solicitud se presente, si esperar a los resultados con el fin de seguir para realizar otras operaciones.

3. bloqueo y sin bloqueo: bloqueo y sin bloqueo de estos dos conceptos y procedimientos (rosca) para esperar a la notificación de mensajes de estado cuando (no importa síncrona o asíncrona) relacionados. Ese es el principal estado de bloqueo y sin bloqueo cuando el ángulo del programa (rosca) para esperar a la notificación de mensaje.

El bloqueo y sin bloqueo preocupación es el estado del programa mientras se espera el resultado de la llamada (el mensaje, el valor de retorno) de.

Bloqueo de llamadas se refiere a los resultados antes de la llamada devuelve, se suspende el subproceso actual. Sólo el subproceso de llamada no vuelve hasta después del resultado.

Antes de llamada sin bloqueo se refiere no obtener los resultados inmediatamente, la llamada no bloquea el flujo actual.

4. Paralelamente Concurrente

4.1 Concurrencia: el sistema operativo, se refiere a un período de tiempo ha comenzado varios programas están en la carrera para correr entre terminado y estos programas se están ejecutando en el mismo procesador, pero cada vez que un punto sólo un programa que se ejecuta en el procesador.

Cuando más de un hilo para cada hilo en funcionamiento, si el sistema es sólo una CPU, a continuación, simplemente puede no ser cierto, al mismo tiempo más de un hilo, puede sólo el tiempo de la CPU se divide en varios períodos, entonces el período de tiempo asignado realizar, en un período del código de la rosca se está ejecutando, el otro hilo está en un estado suspendido. . De esta manera nosotros llamamos simultánea (concurrente).

4,2 paralelo: cuando el sistema tiene más de una CPU, entonces es posible hacer funcionar el hilo no concurrente. Cuando una CPU ejecuta un hilo, la otra CPU puede ejecutar otro hilo, dos hilos y no aprovechar los recursos de CPU, se pueden realizar de forma simultánea, que llamamos un tal manera paralela (paralelo)

4.3 concurrencia y paralelismo diferencia:

  • Usted comer la mitad de una comida, teléfono, y sólo tiene que recoger después de comer, lo que significa que no son compatibles concurrente no paralelos de apoyo.
  • Se come la mitad de una comida, teléfono y descuelga el teléfono dejó, y luego continuó después de una comida, muestra su apoyo a la concurrencia.
  • Se come la mitad de una comida, teléfono, y el teléfono mientras se come lado, muestra su apoyo paralelo.

La clave es que tiene la capacidad de manejar simultáneamente múltiples tareas, no necesariamente al mismo tiempo. chaveta es que tiene la capacidad de manejar múltiples tareas.

Así que creo que son el punto más crucial es: si es "al mismo tiempo".

En tercer lugar, asíncrono y la diferencia multi-hilo? (artículos) Principio

1. asíncrono y multi-hilo Cuál es la diferencia?

De hecho, el propósito es asíncrona, y multi-threading es un método para lograr este propósito. media asíncrono, después de A inicia una acción (generalmente más lento el funcionamiento, sin la operación que consume tiempo, no es necesario el asíncrona), continuamos para hacer frente a su propia cosa auto-servicio, hacer de espera no se seca para este tiempo de operación regresa.

Similitudes y diferencias 2. multihilo y operaciones asincrónicas

Tanto el multithreading y de las operaciones asincrónicas pueden lograr el propósito de evitar el subproceso de llamada se bloquea, lo que mejora la capacidad de respuesta del software. A veces incluso pensamos multihilo y operaciones asincrónicas son conceptos equivalentes. Sin embargo, las operaciones asincrónicas multi-threading y todavía hay algunas diferencias. Estas diferencias temporales causadas por el uso indiscriminado de multi-threading y funcionamiento asíncrono de.

3. La naturaleza asíncrona de la operación

Todos los programas serán finalmente ser ejecutadas por el hardware del equipo, por lo que a fin de comprender mejor la naturaleza de las operaciones asincrónicas, tenemos que mirar en su hardware se basa. Familiarizados con los amigos DMA hardware, ciertamente, no es ajeno a la palabra, disco duro, las especificaciones técnicas de CD-ROM tiene el modo DMA indicadores claros, de hecho, tarjeta de red, tarjeta de sonido, tarjeta gráfica es también una función de DMA.

DMA es mediante acceso directo a memoria, es decir, el hardware tiene una función DMA del tiempo y la memoria en el intercambio de datos pueden no consumir recursos de CPU. Mientras la CPU envía una orden al inicio de la transmisión de datos, comenzó su propio hardware y la memoria para intercambiar datos, después de la transferencia es desencadenantes de hardware completas una interrupción para notificar la operación se ha completado. Estos necesidad no consume base de hardware S / I operaciones de tiempo de CPU es la operación asincrónica. Incluso en un solo proceso como DOS (concepto de proceso e inalámbrico) sistema también puede iniciar la operación de DMA asíncrona.

4. La naturaleza de la rosca

Hilo no es una función del hardware, sino una función lógica del sistema operativo, el hilo es esencialmente el proceso del código para una carrera al mismo tiempo, por lo que el hilo tiene que invertir operan recursos de la CPU del sistema para ejecutar y programación.

Las ventajas y desventajas de la operación asincrónica

Debido a la operación asíncrona sin hilos de carga adicional, y utiliza un enfoque de devolución de llamada al tratamiento, en bien diseñado, el controlador puede no tener que utilizar variables compartidas (si no del todo no, al menos se puede reducir el número de variables compartidas), reduce muertos desbloquee. Por supuesto, la operación asincrónica no es perfecto. Cuanto mayor sea la complejidad de la operación de escritura asincrónica, el programa utiliza principalmente modo de devolución de llamada para hacer frente a la forma de pensar de la gente común es ligeramente diferente, y difícil de depurar.

6. Las ventajas y desventajas de multi-roscado

Obviamente las ventajas de multi-threading, manejador de hilo sigue el orden de ejecución, de acuerdo con los hábitos de la mente de la gente común, por lo que la programación es simple. Sin embargo, las desventajas de subprocesos múltiples también son evidentes, una carga adicional de cambios de contexto que los hilos de uso (abuso) darán el sistema. Y las variables compartidas entre las roscas podrían llevar a un punto muerto.

Asíncrono y multi-hilo, desde el punto de vista relación dialéctica, asíncrono y multi-threading no es una relación de igualdad, el propósito es asíncrona, multi-hilo pero tenemos un medio para lograr asíncrono. ¿Cuál es asíncrona: asíncrono se devuelve cuando una petición de llamada se envía a la persona que llama, pero la persona que llama sin esperar a sus resultados. La tecnología multi-threading asíncrono se puede utilizar u otro proceso es para ser manipulados. Extendido: el conocimiento multithreading lista sistema base

En cuarto lugar, asíncrono, multi-roscado y paralela diferencia

Ejemplo: Supongamos ahora que la ciudad está a sólo un tren, un conductor, necesidad de pensar en un minuto y luego decidir que comprar un billete de tren que cada pasajero tras consultar conductor.

1. asíncrono: Después de consultar a las personas que compran boletos, necesidad de pensar en un minuto, a un lado de inmediato, pero no se alinean de nuevo, cuando se puede pensar con claridad hablar con el conductor de inmediato ir a comprar un boleto. En el pensamiento de la persona de pie junto a la hora, en ese entonces la gente corrió a comprar. Esta vez el equipo se está moviendo muy rápido, sin obstrucción, para maximizar la eficiencia del conductor.

2. multihilo: Estación n ventanas abiertas (pero todavía sólo una de las entradas), mientras que la parte exterior de la fila n equipos, después de la pregunta Pregunta respuesta del conductor, caballo parado la siguiente ventana, y luego continúan girando a la siguiente ventana .... . personas deciden qué ventana es buena, el conductor voló comprado para él pasado. Esta vez los pasajeros es relativamente simple, pero si el equipo estaba pensando durante mucho tiempo enredado detrás de las personas en la tragedia.

3. paralelo: Copias n estación de tren, al mismo tiempo la venta de boletos, boletos mucho mayor. También podemos estación de tren, que algunas personas que fueron a comprar un billete.

4. visible: En tan sólo una estación de tren, y sólo un conductor de los casos, venden una venta a continuación, dará lugar a un desperdicio de recursos, la ineficiencia, el equipo de pegado, es difícil avanzar. manera de resolver todo el equipo no se mueve, el problema de la venta de entradas bajas 1,2 optimizada. Pero el aumento de la estación de tren, aumentar la ventana, es una buena manera de aumentar el conductor. Extendido: el conocimiento multithreading lista sistema base

5. Conclusión:

1. De hecho, asíncrono y multi-hilo eficiencia casi, pero no muchas ventanas abiertas, por ejemplo tres, mientras que hay un montón de gente va a pasar 5 minutos en lugar de un minuto para ir cuando enredado, la eficiencia multi-roscado es en realidad más bajo que asíncrono, debido a que el conductor o que se encuentran normalmente tres veces mientras atrapado en la maraña que no pueden hacer cola para las entradas.

2. Estos dos conceptos utilizados para contrastar un poco inadecuado, porque no son un concepto, o con el propósito de, asíncrono multi-roscado asíncrono multi-hilo debe ser un medio para lograr. la sincronización asíncrona debe hablar de comparar mi hijo.

3. Multithreading es relativamente simple, pero requiere una ventana adicional, aumento de los costos, y este fue el peor conductor bajo php apache similares, y el nodo. Los js javascript siguiente relación, es un multi-hilo, pero está bloqueado, el otro es un único subproceso asíncrono no bloqueante. programa php más en línea con el pensamiento convencional, pero más memoria de costos, nodo. js sin bloqueo, con menos recursos serán capaces de realizar la misma tarea, pero la programación confuso.

4. En paralelo, mientras que el uso similar de cada núcleo de una CPU de múltiples núcleos a calcular. Concurrentes dividirse en seudo complicado, muy complicado. El primero, por ejemplo, solo núcleo de procesador concurrente, que se refiere al desarrollo simultáneo de múltiples núcleos procesadores.

5. La mejor manera de Computación Paralela, y la computación asíncrona en cada CPU, para que pueda sacar el máximo provecho de cada núcleo. Sin embargo, los requisitos de programación son demasiado alto es demasiado alto, si no el cálculo intensivo, tales como grandes método de elementos finitos (uso más concurrente), o el acceso al servidor simultáneamente miles de procesos (o un uso más asíncrona multi-threading), o con honestidad la forma tradicional, después de todo, la cantidad de procedimientos de rutina de cálculo de hardware en este momento, el problema no es grande. Extendido: el conocimiento multithreading lista sistema base

En quinto lugar, el bloqueo de bloqueo no diferencia asíncronos y síncronos? (Parte Story)

La comprensión de bloqueo sincrónica, sin bloqueo síncrono de bloqueo, asíncrono, el bloqueo asíncrono sin bloqueo asíncrono,

mecanismo de notificación de mensajes síncrono / asíncrono se refiere, y el bloqueo no bloqueo / preocupación es el estado del programa (rosca) para esperar la notificación de mensajes.

Xiao Ming para descargar archivos analogía, estos dos grupos de enfoque para ilustrar este concepto nuevo, con la esperanza de promover una mejor comprensión de todo el mundo.

1. bloqueo síncrono: Xiao Ming ha estado mirando descarga barra de progreso para el 100% de las veces que se complete.

  • La sincronización se refleja en: Espere a que la descarga se ha completado la notificación;
  • El bloqueo se refleja en: Espere a que se complete la descarga el proceso de notificación, no se puede hacer otras tareas de procesamiento;

2. Sin bloqueo de sincronización: Xiao Ming después de la presentación de las tareas de descarga para hacer lo contrario, cada vez en cuando ir a echar un vistazo a la barra de progreso, se produjo un total de 100%.

  • La sincronización se refleja en: Espere a que la descarga se ha completado la notificación, sino estar en;
  • No bloqueante refleja en: Espere a que se complete la descarga el proceso de notificación, una tarea para hacer otra cosa, pero de vez en cuando echar un vistazo a la barra de progreso; [Xiaoming necesidad de cambiar entre tareas, preocupado por el progreso de descarga]

3. bloqueo asíncrono: Xiao Ming ha cambiado la función de notificación de la terminación de descarga del software, la descarga se ha completado en el sonido "ding". Pero aún así Xiao Ming estado esperando "ding" sonido (parece tonto, ¿no es así).

  • Asíncrono refleja en: la descarga se ha completado la notificación de sonido "ding";
  • El bloqueo se refleja en: Aviso de espera antes de la descarga para completar el proceso de "mordida", no se puede hacer otras tareas de procesamiento;

4. no bloqueo asíncrono: Todavía programa de descarga que sonará "ding", y Xiao Ming después de la presentación de una tarea de descarga a hacer otra cosa, a escuchar el "ding" sonido para saber completa.

  • Asíncrono refleja en: la descarga se ha completado la notificación de sonido "ding";
  • No bloqueante refleja en: Espere a que termine la descarga el proceso de notificación de sonido "ding", la tarea de hacer de otro modo, y sólo necesita recibir el sonido "ding" para notificar; tareas de procesamiento de software [descarga, Xiao Ming para manejar otras tareas, sin prestar atención a los avances, recibir simplemente "ding" de software a las notificaciones de sonido]

En otras palabras, / asíncrono síncrono es el camino (mecanismo) "Descargar mensaje completo" notificación y bloqueo / no-bloqueo está en un estado de espera "mensaje de terminación de descarga" proceso de notificación (no se puede hacer otras tareas), en diferentes se aplican escenario, síncrono / asíncrono, cuatro combinaciones de bloqueo / no-bloqueo.

Por lo tanto, para resumir, mecanismos sincrónicos y asincrónicos sólo están preocupados por la forma en la notificación de mensajes y bloqueo y sin bloqueo preocupación es el estado de espera de notificación de mensajes. En otras palabras, en el caso sincronizado por la persona que procesa el mensaje de ellos esperando a ver si se activa el mensaje, y el caso fue provocada por un mecanismo asíncrono de notificación para hacer frente a esos mensajes, por lo que en un mecanismo asíncrono, los mensajes se procesan y el mecanismo de activación entre otras tendrá que cerrar una conexión:

En el caso de Bob, este puente es el software de sonido "ding".

Síncrono / asíncrono y de bloqueo / no-bloqueo

1 Formulario de bloqueo síncrono

La eficiencia es el más bajo,

Tome el ejemplo anterior, es que se concentre espera para la descarga se haya completado, no hacer nada más.

efectiva de los programas: leer O_NONBLOCK no está ajustado a la operación de la bandera fd / escritura;

2 forman bloqueo asíncrono

operación asíncrona puede ser bloqueado para vivir, pero no se bloquea al procesar un mensaje, pero el mensaje está bloqueado a la espera de la notificación.

Por ejemplo, seleccionar una función, de ser aprobada en el último parámetro de tiempo de espera es NULL, entonces el evento no es una preocupación si se activa, el programa ha sido bloqueado en la llamada select este lugar.

3 forma síncrona no bloqueante

De hecho ineficaz,

Imagínese que mientras haces otras cosas al mismo tiempo no es necesario para buscar la descarga se ha completado, si haciendo otra cosa y observar la finalización de la ubicación de descarga como dos procedimientos de operación, entonces este programa necesita dos comportamientos diferentes conmutación de ida y vuelta entre, imagínese eficiencia es baja.

Mucha gente va a escribir el bloqueo de las operaciones de lectura / escritura, pero no se olvide que usted puede fijar la bandera O_NONBLOCK en fd, de modo que pueda sincronizar la operación se convierte en un no-bloqueo.

4 no bloqueante forma asíncrona

mayor eficiencia,

Debido a que espere a la descarga es (camareros) completa cosa, y se nota es el de ordenador (el mecanismo de activación del mensaje) cosas, el programa no cambia de ida y vuelta en dos operaciones diferentes.

Hasta el momento, sobre el hilo de proceso, asíncrono síncrono, de no bloqueo el bloqueo simultáneo en paralelo ha estado hablando de ello, se habla del mal lugar dijo que por favor jefes. Gracias, hermano mayor es también el artículo en línea me ayudó a entender estos conceptos.

En sexto lugar, el extremo (más de una referencia a la gran dios del artículo)

¡¡¡Siempre mantén la fe!!!

Publicados 122 artículos originales · ganado elogios 64 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/chenmingxu438521/article/details/104200208
Recomendado
Clasificación