Esiste un tipo di sincronizzazione che esiste tra i thread chiamati blocchi. In questo caso, il thread necessita di reciproca esclusione. Richiede un thread da eseguire alla volta. Quindi, anche un altro modello comune richiesto quando vengono interagiti più thread. Stanno - aspettando e segnalando. Un thread aspetterà fino a quando l'altro thread non termina il suo lavoro. Dopo aver completato l'esecuzione di questo thread, il thread in attesa può eseguire nel processore. Per questo tipo di sincronizzazione del thread, abbiamo bisogno di un'altra tecnica, chiamata impegnata in attesa di alcune variabili. Per questo, abbiamo bisogno di una nuova primitiva di sincronizzazione chiamata variabili di condizione.
Questo concetto di thread è disponibile in diverso sistema operativo. Ma andremo al nome, variabili di condizione che viene applicata come libreria PThread nel sistema operativo Linux
La funzione pThread_cond_wait () è un componente di attesa. Questa funzione per impostazione predefinita esegue l'azione di sblocco.
Programmazione Esempio-1:
In questo esempio di programmazione vedremo come esegue questa funzione:
#includereProduzione:
Spiegazione
In questo esempio di programmazione esistono due processi chiamati thread genitore e un thread figlio. Qui, il genitore vuole aspettare il bambino. Dopo aver completato l'esecuzione del processo figlio, il genitore avvia la sua esecuzione.
Per l'interno principale () creiamo il thread genitore e figlio. Il thread figlio esegue la funzione denominata figlio (). Quindi il thread genitore chiama la funzione join. Questo join () fondamentalmente controlla che il bambino sia finito. Altrimenti aspetterà usando la funzione pThread_cond_wait (). Quando il bambino funziona, chiama l'uscita (). Quando l'esecuzione del bambino viene eseguita, il valore della variabile fatta sarà 1. Quindi, chiama il segnale sulla variabile della condizione. Dopodiché inizierà l'esecuzione del thread genitore.
Aspetta e sintassi del segnale:
void thr_exit ()Cosa succede se non otteniamo un blocco? Si verificherà una condizione di gara - wakeup mancato.
Programmazione Esempio-2:
In questo esempio di programmazione vedremo un altro uso di pThread_cond_wait.
#includereProduzione:
Spiegazione
Qui vedremo l'applicazione della funzione pThread_cond_wait (). È come quando qualcuno vuole riempire il carburante la sua auto. Deve aspettare fino a quando la sua auto sarà riempita di carburante. Per questo, creiamo due thread. Uno per riempire il carburante in macchina e per l'auto. Definiremo due funzioni. Uno è la funzione di rifornimento () che determina quando riempire l'auto con carburante e un'altra è la funzione veicolo () per ottenere carburante. Il ragazzo che vuole riempire il carburante nella sua auto deve aspettare fino a quando il carburante è riempito.
All'interno della funzione principale () creeremo due thread per la funzione di alimentazione () e per veicoli (). Ora creeremo una variabile di condizione per attendere la condizione. Per questo vedremo l'output. Quando le funzioni completano la loro esecuzione, distruggeremo questi thread.
Conclusione
La funzione pThread_cond_wait () avvisa quando abbiamo eseguito un programma con l'aiuto di più thread. Questa funzione farà alcune variabili di condizione per gestire questi thread. In realtà, le caratteristiche di questa funzione dipendono totalmente dal principio di Aspetta e segnala teoria.