Dato che un thread altro non è che una funzione C che gira in maniera concorrente ad altre funzioni (nell'esempio i due thread sono le due funzioni somma1 e somma2), allora si applicano le regole di scope del C standard. Sono quindi condivise fra tutti i thread quelle variabili che sono globali a tutte le funzioni.
Nell'esempio i due thread denominati somma1 e somma2 accedono entrambi alla variabile condivisa shared.val incrementandola, entrano quindi in un ciclo pensato solo per far passare del tempo e quindi rileggono e stampano a video la variabile condivisa. Tale accesso non viene regolamentato da alcun meccanismo di gestione delle concorrenza, non si può avere quindi alcuna garanzia sul fatto che il valore che viene alla fine stampato a video sia effettivamente quello che la variabile aveva assunto dopo il suo incremento, poichè, nel frattempo, può essere stato schedulato l'altro thread che l'ha a sua volta modificato.
Oltre a dare un'esemplificazione di come possono essere creati dei thread l'esempio mostra come la concorrenza non regolamentata genera, anche in un caso semplice, problemi di consistenza dei dati, quando a questi si accede senza il supporto di appositi meccanismi