Funzione sem_post 3 c

Funzione sem_post 3 c
Il metodo "sem. Nessun thread è stato trattenuto mentre aspettava che il semaforo si sblco. Invece, il valore del semaforo è semplicemente aumentato se il valore semaforo ottenuto da questa azione è positivo. La funzione "sem_post ()" solleva (sblocca) il semaforo che SEM ha indicato. Il valore di un semaforo viene aumentato di uno quando un post viene effettuato usando il metodo sem_post (). Useremo questa funzione "sem_post ()" qui nella nostra programmazione C e ti mostreremo come la funzione "sem.

Sintassi:

La sintassi di questa funzione "sem_post ()" nella programmazione C è riportata di seguito:

int sem_post (sem_t *sem);

Esempio 1:

Gli esempi in questa guida sono compatibili con Ubuntu 20.04. Il compilatore GCC deve essere installato per Ubuntu 20.04 Per eseguire questi esempi. Quando è installato GCC, verrà creata una piccola parte del codice C per mostrare come utilizzare la funzione "sem_post ()" nella programmazione C. Alcuni file di intestazione vengono utilizzati all'inizio del codice. Il file di intestazione di input/output predefinito è "stdio. h "ed è disponibile come segue. Quando si scrive il codice C, dobbiamo includere questo file di intestazione. Il "semaforo. viene quindi aggiunto il file di intestazione h ". Per utilizzare la funzione "sem_post ()", che è definita in questo file di intestazione, l'abbiamo incluse.

La funzione "Main ()" viene quindi posizionata qui. Con questa funzione "main ()", viene utilizzato il tipo di dati "int". Inoltre, c'è "sem_t" con il nome "my_sem". In questo caso, "il mio SEM" è dichiarato insieme al "num" del tipo di dati "int". Stiamo usando il codice "SEM init ()" di seguito. Ci sono tre argomenti in questo "sem_init."Qui, il parametro" & my_sem "inizializza il semaforo come primo parametro. La seconda opzione specifica come condividere o utilizzare questo semaforo. Il secondo argomento, in questo caso, è impostato su "0", il che indica che questo semaforo verrà utilizzato solo da thread che sono attualmente operativi.

Il valore iniziale del semaforo è descritto dal terzo parametro. Qui, "20" viene inserito come valore iniziale del semaforo. Quindi mettiamo qui la funzione "sem_post ()" e passiamo "& my_sem" come parametro. Il metodo "SEM GETVALUE ()" verrà quindi utilizzato per recuperare il valore iniziale del semaforo. Qui vengono passati i parametri "& my sem" e "& num". Ciò restituirà il numero del semaforo dopo aver eseguito la funzione "sem_post ()". Il suo valore iniziale sarà aumentato di uno.

Ora, inserendo l'istruzione "printf" in questa posizione, stiamo stampando questo numero dopo l'esecuzione della funzione "sem_post ()" sullo schermo del terminale. Le informazioni inserite appariranno sullo schermo.

Per ottenere l'output di questo codice, abbiamo due istruzioni. Il primo comando deve contenere "-lpThread" e "-lrt" prima di poter premere ENTER. Eseguiamo il secondo comando dopo la raccolta riuscita di questo codice C. Viene quindi visualizzato l'uscita. Da questo output puoi vedere che mostra il valore del semaforo dopo che la funzione "sem_post ()" è incrementata da uno e visualizza "21".

Esempio n. 2:

Iniziamo il nostro prossimo esempio posizionando i file di intestazioni "stdio. H "e" Semaforo. H". Dobbiamo aggiungere questi file di intestazione per questo codice. Ora utilizziamo la funzione "int main ()". Abbiamo un semaforo chiamato "new_sem" e dichiariamo il "numero" come tipo di dati "int". Posizioniamo la funzione "sem_init ()" e diamo tre parametri necessari per questo. Mettiamo il valore iniziale di questo semaforo come "20" e quindi utilizziamo la funzione "sem_post ()" che increderà il suo valore iniziale di uno.

Quindi inserire la funzione "sem. Quindi, visualizzerà il valore incrementato sullo schermo. Mettiamo di nuovo un'altra funzione "sem_post ()" e mettiamo lo stesso semaforo in questa seconda funzione "sem_post ()". Quindi, utilizza nuovamente il "sem_getvalue ()" di cui abbiamo già discusso nel nostro esempio precedente. "Printf" viene utilizzato per stampare il valore dopo questa seconda funzione "sem_post ()".

Puoi vederlo in primo luogo, stampa il valore del semaforo come "21" mentre diamo il valore iniziale del semaforo come "20". Dopo la funzione "sem_post ()", i suoi valori aumentano di uno e visualizzano "21". Nella seconda riga, il valore del semaforo è "22" perché abbiamo di nuovo messo la funzione "sem_post ()".

Esempio # 3:

Aggiorniamo leggermente il codice menzionato in precedenza. Il codice è lo stesso di quello che abbiamo istituito prima. Posizioniamo i due file di intestazione "stdio. H "e" Semaforo. h "che è necessario per questo codice. Utilizziamo anche la funzione "int main ()" e dichiariamo il semaforo e il valore, un tipo di dati "int", sotto questa funzione principale. Dopo aver usato "SEM init" per stabilire il semaforo e aver superato i suoi argomenti, utilizziamo il metodo "SEM GETVALUE ()" per recuperare il valore iniziale del semaforo. Dopodiché, stampalo come abbiamo già spiegato. La funzione "sem_post ()" è nuova che stiamo aggiungendo qui. Questa funzione viene utilizzata per aumentare il valore del semaforo. Il risultato mostrerà come la funzione "sem_post ()" aumenta il valore iniziale di questo semaforo. Quindi usiamo ancora una volta la funzione "sem_getvalue ()" e usando "printf ()", stampiamo anche quel valore.

In questo output, viene visualizzato prima il valore iniziale del semaforo e quindi viene visualizzato il valore dopo la funzione "sem_post ()". Puoi notare che aumenta il valore iniziale del semaforo.

Conclusione

Stiamo scrivendo questa guida per imparare di più sulla funzione "sem_post ()". Questa guida ha coperto i codici e i risultati della funzione "sem_post ()". La funzione C "sem_post ()" è stata trattata in questa guida. Abbiamo discusso di come la funzione "sem_post ()" aumenta il valore del semaforo in c. Abbiamo fornito tre esempi separati qui. È stato fornito il codice sorgente C necessario per utilizzare la funzione "sem_post ()", insieme all'output per ogni esempio. Speriamo che capirai chiaramente questa nozione dopo aver letto attentamente questa guida.