Sincronización de hilos utilizando hebras de POSIX

A+ A-

Sincronización hilo es una parte importante de System.It operativo está explicando que los hilos o procesos concurrentemente-ejecutoras no ejecutan partes específicas de un programa al mismo tiempo. Si un hilo ha comenzado a ejecutar una parte serializada del programa, ningún otro hilo intentar ejecutar esta parte debe esperar hasta que acaba el primer hilo.

Generalmente la porción serializar del programa se llama como sección crítica, significa que si un hilo se está ejecutando en su sección crítica significa que no hay otro hilo se les permite entrar en su sección crítica. Existen diferentes técnicas de proceso de sincronización / hilo disponible en C ++

  • Cierre

  • mutex

  • Monitor (sincronización)

  • Semáforo

Aquí es un método de exclusión mutua de ejemplo, la sincronización de subprocesos usando C ++

// Sincronización de subprocesos
#incluir 
#incluir 
#incluir 
#incluir 
#incluir 
using namespace std;
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;

void * writer1 (void * fd)
{
   int f = * (int *) fd;
   char * cadena1 = new char [200];
   pthread_mutex_lock (& ​​m);
   cout << "\ n acceder a los elementos 1er hilo para escribir en el archivo";
   gets (cadena1);
   for (int i = 0; i <= strlen (cadena1); i ++)
   {
      escribir (f, y cadena1 [i], 1);
      sueño (1);
   }
   pthread_mutex_unlock (& ​​m);
}
void * writer2 (void * fd)
{
   int f = * (int *) fd;
   char * cadena2 = new char [200];
   pthread_mutex_lock (& ​​m);
   cout << "\ n entrar entrar artículos de segunda rosca a escribir en el archivo";
   gets (cadena2);
   for (int i = 0; i <= strlen (cadena2); i ++)
   {
      escribir (f, y cadena2 [i], 1);
      sueño (1);
   }
   pthread_mutex_unlock (& ​​m);
}
principal()
{
   t1 pthread_t, t2;
   int fd = open ( "archivo.txt", O_CREAT | O_RDWR | O_APPEND);
   pthread_create (y t1,0, writer1, y fd);
   pthread_create (y t2,0, writer2, y fd);
   pthread_join (t1,0);
   pthread_join (t2,0);
}

Acerca de Código Fuente

  • pthread_create (), pthread_join () son dos funciones de biblioteca para crear hilo ya la espera de hilo simultáneamente.

  • pthread_mutex_t se utiliza para declarar variables mutex.

  • PTHREAD_MUTEX_INITIALIZER se utiliza para inicializar un mutex estática.

  • Aquí estamos haciendo el bloqueo de archivos utilizando la función pthread_mutex_lock (pthread_mutex_t *) y el desbloqueo usando la función pthread_mutex_unlock (pthread_mutex_t *).

  • El objetivo principal de este código fuente es escribir en un archivo de un modo de sincronización.

Área de aplicación

  • transacciones Bancarias

  • Sistema de bases de datos

  • Servidores web

  • Proyectos de subprocesos múltiples OS