Espera activa

Espera activa

Espera activa

En Informática, se denomina espera activa a una técnica donde un proceso repetidamente verifica una condición, tal como esperar una entrada de teclado o si el ingreso a una sección crítica está habilitado. Puede ser una estrategia válida en algunas circunstancias especiales, sobre todo en la sincronización de procesos en los sistemas con múltiples procesadores (SMP). En general, debe ser evitada, ya que consume tiempo de CPU sin realizar ninguna operación.

Ejemplo en Código C

Este código muestra dos threads (hilos) que comparten la variable global entera i. El primer thread usa espera activa para chequear un cambio en el valor de i.

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

volatile int i; /* i es global, por lo que es visible para todas las funciones.
                   También está marcada como volatile, porque cambiará
                   de forma que no es predecible por el compilador
                   (en este caso: por un hilo diferente.) */

/* t1 usa un spinlock para esperar hasta que i deje de valer 0 */
static void *f1()
{
    while (i==0)
    {
        /* no hacer nada - sólo seguir comprobando una y otra vez */
    } 
    printf("i's value has changed to %d.\n", i);
  
    return;
}

static void *f2()
{
    sleep(60); /* dormir 60 segundos. */
    i = 99;
    printf("t2 changing the value of i to %d.\n", i);

    return;
}

int main()
{
    int x;
    pthread_t t1, t2;
    i = 0; /* set global int i to 0. */
 
    x = pthread_create(&t1, NULL, f1, NULL);
    if (x != 0)
    {
        printf("pthread foo failed.\n");
    }
 
    x = pthread_create(&t2, NULL, f2, NULL);
    if (x != 0)
    {
        printf("pthread bar failed.\n");
    }
 
    pthread_join(t1, NULL);
    pthread_join(t2, NULL);
    printf("all pthreads finished.\n");
    return 0;
}

En un sistema UNIX, puede compilar este código con este comando:

$ cc spinlock.c -lpthread

En Linux, reemplace el compilador cc con el compilador gcc.

Obtenido de "Espera activa"

Wikimedia foundation. 2010.

Игры ⚽ Нужна курсовая?

Mira otros diccionarios:

  • Sistema de protección activa — Un sistema de protección activo (en inglés Active Protection System, APS) es un sistema (usualmente para una aplicación militar) diseñada para prevenir que los sensores de una arma adquieran y/o destruyan su blanco. Las contramedidas electrónicas …   Wikipedia Español

  • Cluster de alta disponibilidad y espejo con Ubuntu 7.04 — Saltar a navegación, búsqueda Cluster de alta disponibilidad y espejo con Ubuntu 7.04 Este proyecto fue realizado como un proyecto de comunicaciones I de la Universidad de El Salvador La versión en que se vaso en ese momento fue Ubuntu 7.04 pero… …   Wikipedia Español

  • Semáforo (informática) — Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento del sistema o variables del código fuente) en …   Wikipedia Español

  • Nokia N85 — En este artículo se detectó el siguiente problema: Carece de fuentes o referencias que aparezcan en una fuente acreditada. Por favor, edítalo para mejorarlo, o debat …   Wikipedia Español

  • Exclusión mutua (informática) — Para otros usos de este término, véase Exclusión mutua. Los algoritmos de exclusión mutua (comúnmente abreviada como mutex por mutual exclusion) se usan en programación concurrente para evitar el uso simultáneo de recursos comunes, como variables …   Wikipedia Español

  • Interrupción — Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar …   Wikipedia Español

  • MIDI — Puertos y cable MIDI. MIDI son las siglas de la (Interfaz Digital de Instrumentos Musicales). Se trata de un protocolo de comunicación serial estándar que permite a los computadores, sintetizadores, secuenciadores, controladores y otros… …   Wikipedia Español

  • Antipatrón de diseño — Saltar a navegación, búsqueda Un antipatrón de diseño es un patrón de diseño que invariablemente conduce a una mala solución para un problema. Al documentarse los antipatrones, además de los patrones de diseño, se dan argumentos a los diseñadores …   Wikipedia Español

  • Nokia 6555 — logo de nokia. El Nokia 6555 es un teléfono celular 3G para el mercado masivo, presentado en el segundo semestre de 2007, con un estilizado diseño clamshell,Push To Talk, pantallas duales color, y Bluetooth stereo. Otras funciones incluyen cámara …   Wikipedia Español

  • Yamaha YMF262 — Yamaha YMF262. Archivo:YamahaOPL2.jpg Yamaha YMF262 M en Modem Rockwell. El Yamaha YMF262 también conocido como OPL3 (OPL es un acrónimo de FM Operator Type L), es una versión mejorada del chip de sonido Yamaha YM3812 (OPL2) diseñado y fabricado… …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”