C Programmazione

Posix Mutex con programmazione in C

Posix Mutex con programmazione in C
L'articolo di oggi sarà incentrato sull'utilizzo di Posix Mutex con la programmazione C in Linux Mint 20. Tuttavia, prima di passare al nostro esempio principale, vorremmo prima chiarire alcune terminologie, in modo che tu possa facilmente capire lo scenario di esempio che condivideremo con te. Nei sistemi operativi, il concetto di threading è ampiamente utilizzato. I thread sono fondamentalmente sottoprocessi delegati con compiti diversi. Puoi considerare il seguente esempio per capire il funzionamento dei thread.

Supponiamo che ci sia un thread principale A, il cui compito è calcolare la somma delle variabili w e y dove w=x+1 e y=z+2. I valori delle variabili x e z devono essere recuperati dall'utente. In questo scenario, possiamo creare due thread, B e C. Il compito del thread B sarà quello di prendere il valore della variabile x dall'utente, incrementarlo di 1 e salvarlo nella variabile w. Il compito del thread C sarà quello di prendere il valore della variabile z dall'utente, incrementarlo di 2 e quindi salvarlo nella variabile y. Infine, entrambi questi thread consegneranno questi risultati al thread principale A, che calcolerà quindi la loro somma e visualizzerà il risultato finale.

Se non avessimo creato alcun thread in questo scenario, tutte le attività sarebbero state eseguite dal thread principale A in un tempo molto più lungo. In questo modo, i thread possono eseguire in modo efficiente i tuoi calcoli senza inutili ritardi. Tuttavia, c'è una preoccupazione molto importante con l'uso dei thread, che è nota come "condizione di gara". È una situazione in cui due thread cercano di accedere e modificare gli stessi dati, lasciandoli quindi incoerenti. Come programmatore, il nostro obiettivo dovrebbe essere quello di evitare le condizioni di gara nel modo più aggraziato.

La soluzione più comunemente impiegata per evitare le condizioni di gara è l'uso di Mutex. Mutex sta per mutua esclusione e sostanzialmente ci fornisce un meccanismo di blocco che impedisce l'accesso e la modifica dei dati critici da parte di più di un utente alla volta. In questo modo è garantita la consistenza dei dati. Posix è fondamentalmente una libreria che ci presenta diverse funzioni integrate che rendono molto più semplice l'implementazione di thread e Mutex. Con il seguente esempio, proveremo a imparare l'uso di Posix Mutex con la programmazione C in Linux Mint 20.

Esempio di utilizzo di Posix Mutex con programmazione C in Linux Mint 20

Eseguiremo i seguenti tre passaggi per guidarti nell'utilizzo di Posix Mutex con la programmazione C in Linux Mint 20.

Passaggio 1: creazione di un programma che dimostri l'utilizzo di Posix Mutex con la programmazione C in Linux Mint 20

Prima di tutto, creeremo un .cpp sul nostro sistema Linux Mint 20. Andremo semplicemente alla nostra cartella Home, creeremo un documento vuoto e lo chiameremo Mutex.cpp. una volta che il nostro .cpp viene creato, lo apriremo con l'editor di testo. Successivamente, digiteremo il codice mostrato nelle immagini sottostanti al nostro to .cpp file:

Il codice mostrato nelle due immagini sopra ha creato due thread diversi. Il primo thread corrisponde al Job #1, mentre il secondo thread corrisponde al Job #2. Quindi abbiamo creato una funzione di esempio denominata "Funzione Mutex". In questa funzione, stiamo prima bloccando la variabile di blocco Mutex e verrà sbloccata solo una volta che il thread n. 1 avrà terminato il lavoro n. 1. Allo stesso modo, la variabile di blocco Mutex verrà nuovamente bloccata dal thread n. 2 finché non termina il processo n. 2. Questa “Funzione Mutex” è chiamata dalla funzione “main”.

Passaggio 2: compilazione del programma C in Linux Mint 20

Dopo aver salvato il .cpp, lo compileremo ora tramite il terminale Linux Mint 20 con il seguente comando:

$ gcc -o Mutex Mutex.cpp -pthread

Qui, “Mutex”, dopo il flag “-o”, fa riferimento al nome del file oggetto che verrà creato, mentre “Mutex.cpp" è il nome dell'originale .cpp file. Il flag "-pthread" è necessario per compilare questo programma perché questo programma viene scritto utilizzando la libreria "pthread". Se ometti questo flag, il tuo programma non verrà compilato e restituirà alcuni errori. La compilation di successo del nostro .cpp non produrrà alcun messaggio sul terminale, come mostrato nell'immagine seguente:

Passaggio 3: esecuzione del programma C in Linux Mint 20

Una volta creato il file oggetto denominato “Mutex”, possiamo eseguirlo utilizzando il seguente comando:

$ ./Mutex

Nell'output del nostro Mutex.cpp, noterai che il primo Job 1 è stato avviato, il che significa che il thread #1 ha acquisito il blocco Mutex. Dopodiché, il lavoro 1 finisce dopo un po' di tempo. Quindi, viene avviato il lavoro 2, il che significa che il thread n. 2 ha acquisito il blocco Mutex. Sarà sbloccato solo al termine del lavoro 2.

Conclusione

Questo articolo ha fornito una spiegazione approfondita dell'utilizzo di Posix Mutex con la programmazione C in Linux Mint 20. Il Mutex può essere utilizzato in modo molto efficace per evitare le condizioni di gara durante la programmazione semplicemente includendo la libreria Posix o pthread nel nostro codice C. Ciò non solo garantirà la coerenza dei dati, ma renderà anche l'elaborazione molto più efficiente.

La cosa migliore dell'utilizzo della libreria Posix in Linux è che non abbiamo nemmeno bisogno di installare alcun software, pacchetto o compilatore specializzato per questo. Il codice C può essere semplicemente scritto in qualsiasi editor di testo predefinito su Linux e può essere compilato ed eseguito con i compilatori gcc o g++ predefiniti. Questo dimostra di essere un ulteriore livello di facilità e praticità nell'uso di Posix Mutex con la programmazione C in Linux Mint 20.

Rimappa i pulsanti del mouse in modo diverso per software diversi con X-Mouse Button Control
Forse hai bisogno di uno strumento che possa cambiare il controllo del tuo mouse con ogni applicazione che utilizzi. In questo caso, puoi provare un'a...
Recensione del mouse wireless Microsoft Sculpt Touch
Ho letto di recente del Microsoft Scolpisci il tocco mouse wireless e ho deciso di acquistarlo. Dopo averlo usato per un po', ho deciso di condividere...
Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...