..


Enlaces patrocinados

Programación concurrente en C + +

Artículo escrito por Stefano Cancedda
Página 1 de 6

La programación de secuencias ofrece la garantía de que las instrucciones se ejecutan siempre en orden, sin variaciones. El comportamiento resultante es determinista: la inserción de los mismos insumos, la producción se obtiene el mismo resultado.
Para cada programa que se ejecuta el sistema operativo crea un proceso que da un espacio de memoria protegida. Esto ofrece la posibilidad de que procesos independientes que operan simultáneamente sin errores.

Diferente (y más avanzada) es la programación concurrente. Antes de que el sitio se va a introducir y cómo funciona, en mi opinión, un determinado tipo de objeto llamado un hilo del núcleo.

Como temas objetos del núcleo son gestionados por el sistema operativo, y tienen dos características fundamentales:

  • Cada hilo tiene una estructura de datos privados, que almacena su propia pila, la información de excepción, la siguiente instrucción a ser ejecutada;
  • Cada uno comparte tema con todo el proceso un área de memoria común.
El uso de hilos tiene varias ventajas en términos de ejecución. En particular, explotar al máximo el rendimiento de CPUs multi-core, que son en la actualidad la tecnología dominante en el mercado de computadoras personales. Es impensable que una cierta complejidad de las aplicaciones modernas están diseñadas de una manera secuencial, lo que podría aprovechar el momento, sólo uno de los principales que ofrece la máquina.

Como otra ventaja, se puede ver como dos procesos diferentes que se ejecutan el mismo código, tal vez con parámetros diferentes, son menos eficientes que los dos temas que pueden explotar directamente la memoria compartida. En un sistema que no admite discusiones, si se desea ejecutar varias veces el mismo programa, se debe crear más puestos de trabajo basado en el mismo programa. Esta técnica funciona, pero es un desperdicio de recursos y es más lento.

En tercer lugar, los hilos tienen la ventaja de que se llamen los bloqueadores de E / S: en lugar de esperar a que el evento desencadenados por el usuario detener la ejecución del algoritmo, se puede empezar una nueva discusión y evitar tiempos de inactividad innecesarios que empeora el rendimiento general.

En contraste con la programación concurrente necesita el apoyo de las construcciones de sincronización, que son fundamentales para evitar accesos aleatorios a los errores de memoria compartida causa de la producción. También expone que el programador de una serie de errores a menudo mal alimentados por el comportamiento impredecible del programa determinista.

Además de esto, las construcciones de la sincronización tiene un costo, tanto en términos de tiempo de máquina necesaria para ejecutar su código en una pérdida de rendimiento en particular causado por las expectativas generadas por estas construcciones con el fin de garantizar la imparcialidad en el ejercicio de la competencia.

Los principales objetos que permiten la gestión de la competencia se prevé a continuación y se describen detalladamente en los párrafos siguientes:

  • Elementos volátiles
  • Funciones de enclavamiento
  • Semáforo
  • Las secciones críticas
  • Eventos
  • Temporizador
  • Mutex
Cada uno de estos elementos en forma de una manera natural para resolver una clase específica de problemas sencillos. Para problemas más complejos en forma sencilla combinar estos objetos juntos para conseguir un resultado correcto y el paso satisfactorio de la resolución de problemas que requieren el uso de uno de los primeros y los problemas que se definen como anteriormente es un complejo muy crítico. La combinación de objetos de sincronización puede ser complicado, en el mejor de los casos, porque no se puede obtener un rendimiento lo suficientemente alto en el peor de los casos, porque no es fácil encontrar la solución que asegura la exactitud del resultado. Por lo menos no el peor de los casos: hay un error fatal y no identificó de inmediato. Esta coyuntura es muy frecuente, tanto por la sensibilidad de los temas que se discuten, es el hecho de que la depuración es siempre problemática en el entorno de concurrentes, los flujos están en ejecución determinista hecho, cada ejecución del programa, el orden el procesador realiza las operaciones es siempre diferente.

En la misma categoría ...
E-Learning
Flash MX y ActionScript (Curso) Flash MX y ActionScript (Curso)
Convertirse en un desarrollador de sitios web desde 29 €.
Javascript (Curso) Javascript (Curso)
Guía completa de scripting del lado del cliente. A partir de 39 €.
PHP (Curso) PHP (Curso)
Ciclo completo para la creación de sitios Web dinámicos. A partir de 49 €.
Enlaces patrocinados