Esercizi sul multi-threading C++

Lugio

Utente Attivo
845
223
Hardware Utente
CPU
i5 6600k
Dissipatore
enermax liqmax 240
Scheda Madre
msi z170 gaming m3
Hard Disk
seagate barracuda 1tb
RAM
hyperx fury 16gb cl14 2133hz
Scheda Video
rx 480 8gb reference
Monitor
TV HD 32"
Alimentatore
cx750m corsair
Case
cooler master mastercase 5
Sistema Operativo
windows 10 64bit
Ciao a tutti,
mi sono messo ad imparare la data race e tutto ciò che ne consegue ( lock, multi-threading, task, ecc... ) facendo piccole cavolate come esercizi.
Dopo aver finito pure quelli sono caduto nel vuoto della noia :asd: ed ho provato a bazzicare sul web, senza trovar nulla per il linguaggio da me amato.
Chiedo quindi se qualcuno di voi avrebbe in mente qualche esercizio un po' più complesso ed impergnativo, non da millemila righe di codice ma neanche da 50.
Ringrazio in anticipo per ogni risposta ed aiuto.
 

DispatchCode

Utente Attivo
572
325
Hardware Utente
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Sistema Operativo
Windows 10 64bit
Un classico potrebbe essere implementare "produttore /consumatore", dovendo anche sincronizzare i thread quindi.

Un altro magari sulle barriere.
 

Lugio

Utente Attivo
845
223
Hardware Utente
CPU
i5 6600k
Dissipatore
enermax liqmax 240
Scheda Madre
msi z170 gaming m3
Hard Disk
seagate barracuda 1tb
RAM
hyperx fury 16gb cl14 2133hz
Scheda Video
rx 480 8gb reference
Monitor
TV HD 32"
Alimentatore
cx750m corsair
Case
cooler master mastercase 5
Sistema Operativo
windows 10 64bit
Un classico potrebbe essere implementare "produttore /consumatore", dovendo anche sincronizzare i thread quindi.

Un altro magari sulle barriere.
Sinceramente non ho capito cosa intendi in nessuno dei due casi :suicidio:.
Comunque, solo per chiarire, potete metterci di tutto, puntatori, array, vettori, classi, ecc...
 

DispatchCode

Utente Attivo
572
325
Hardware Utente
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Sistema Operativo
Windows 10 64bit
Nel primo caso si tratta di un algoritmo che usa una coda (o un normale buffer) che viene riempita dal produttore, e svuotata dal consumatore progressivamente.
In sostanza il produttore inserirà elementi nel buffer, assicurandosi di non superare il limite, ed il consumatore preleverà gli elementi assicurandosi di non rimuovere più di quanti ce ne siano.

Quello con le barriere è un problema tipico di sincronizzazione. Si tratta di elaborare dati in due thread (o più) sino al raggiungimento di un valore (la barriera) raggiunto il quale il thread che giunge a questa barriera attende gli altri.
 

Entra

oppure Accedi utilizzando