Une fausse base bancaire stocke des comptes dans accounts.db. Plusieurs processus ou threads exécutent des transferts en parallèle, avec une version volontairement non sécurisée puis des versions protégées.
Projet en action ✦
MiniProjet2-Concurrence
Une visualisation courte du problème traité dans le projet : des transactions concurrentes, puis la même situation protégée par un verrou.
Le projet, derrière l’écran ✦
Le projet
sans détour.
Le sujet, le fonctionnement, le point difficile et les choix de code : tout ce qu’il faut pour comprendre le projet rapidement.
Le projet met en évidence une course critique qui peut corrompre les soldes, puis mesure ce que change une synchronisation correctement placée.
Le parcours principal est jouable ici. Le dépôt GitHub garde la version complète du projet et ses fichiers.
La version non sécurisée lance des transactions concurrentes sans protection. La version processus utilise lockf pour protéger les accès au fichier, tandis que la version bonus partage les ressources avec des threads et des verrous adaptés.
Rendre visible la différence entre des accès concurrents non protégés et une synchronisation placée sur la ressource partagée.
Les variantes Unsecured, Secured et SecuredThread sont séparées, avec leurs Makefiles et README. DataGenerator produit des bases de comptes reproductibles pour varier les tests.
Démonstration ✦
Voir le projet
prendre vie.
Explorez les fonctionnalités, les interactions et le parcours principal du projet.
Le programme bancaire dans son terminal
moncef@portfolio:~/MiniProjet2-Concurrence/Unsecured$ make
gcc unsecured_transaction.c -o unsecured_transaction
moncef@portfolio:~/MiniProjet2-Concurrence/Unsecured$ ./unsecured_transaction 15 30
Processus concurrents sans protection : une course critique peut perdre une écriture.
La démo montre le résultat. Le dépôt GitHub contient le code complet et les fichiers du projet.