Sincronizzazione in discussioni con filo POSIX

A+ A-

Sincronizzazione dei thread è una parte importante di System.It operativo sta spiegando che contemporaneamente-executing thread o processi non eseguono porzioni specifiche di un programma, allo stesso tempo. Se un thread ha cominciato a eseguire una porzione serializzato del programma, qualsiasi altro thread cerca di eseguire questa parte deve attendere fino ai primi finiture filo.

In generale la porzione serializzare del programma si chiama come sezione critica, significa che se un thread è in esecuzione nella sua sezione critica significa che nessun altro thread sono autorizzati a entrare nella loro sezione critica. Ci sono diverse tecniche di processo / sincronizzazione dei thread disponibili in C ++

  • Blocco

  • mutex

  • Monitor (sincronizzazione)

  • Semaforo

Ecco un metodo mutex di esempio filo di sincronizzazione in C ++

// Sincronizzazione dei thread
#includere 
#includere 
#includere 
#includere 
#includere 
using namespace std;
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;

void * writer1 (void * fd)
{
   int * f = (int *) fd;
   char * stringa1 = new char [200];
   pthread_mutex_lock (& ​​m);
   cout << "\ n entrare 1st elementi filo di scrivere nel file";
   gets (string1);
   for (int i = 0; i <= strlen (stringa1); i ++)
   {
      scrittura (F, e string1 [i], 1);
      sleep (1);
   }
   pthread_mutex_unlock (& ​​m);
}
void * writer2 (void * fd)
{
   int * f = (int *) fd;
   char * stringa2 = new char [200];
   pthread_mutex_lock (& ​​m);
   cout << "\ n entra entra voci secondo thread di scrivere nel file";
   gets (string2);
   for (int i = 0; i <= strlen (stringa2); i ++)
   {
      scrittura (F, e stringa2 [i], 1);
      sleep (1);
   }
   pthread_mutex_unlock (& ​​m);
}
principale()
{
   pthread_t t1, t2;
   int fd = open ( "file.txt", O_CREAT | O_RDWR | O_APPEND);
   pthread_create (& t1,0, writer1, e fd);
   pthread_create (& t2,0, writer2, e fd);
   pthread_join (t1,0);
   pthread_join (t2,0);
}

A proposito di SourceCode

  • pthread_create (), pthread_join () sono due funzione di libreria per creare discussione e in attesa di discussione contemporaneamente.

  • pthread_mutex_t è usato per dichiarare variabili mutex.

  • PTHREAD_MUTEX_INITIALIZER viene utilizzato per inizializzare un mutex statico.

  • Qui stiamo facendo blocco dei file utilizzando la funzione pthread_mutex_lock (pthread_mutex_t *) e lo sblocco con pthread_mutex_unlock funzione (pthread_mutex_t *).

  • L'obiettivo principale di questo codice sorgente è scrivere in un file in modo sincronizzazione.

Area di applicazione

  • Transaction Banking

  • Database System

  • Web Server

  • Progettazione Multithreading OS