{"id":26823975,"url":"https://github.com/mbah24-dev/philosophers","last_synced_at":"2025-03-30T09:17:21.911Z","repository":{"id":280903672,"uuid":"943561944","full_name":"mbah24-dev/Philosophers","owner":"mbah24-dev","description":"Le projet 42 Philosophers est une implémentation du célèbre problème des philosophes en C. Il met en jeu la gestion des threads, des mutex et des sémaphores pour assurer une synchronisation correcte et éviter les deadlocks.","archived":false,"fork":false,"pushed_at":"2025-03-05T23:16:04.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-05T23:29:40.413Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mbah24-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-05T22:56:12.000Z","updated_at":"2025-03-05T23:16:08.000Z","dependencies_parsed_at":"2025-03-05T23:29:44.297Z","dependency_job_id":null,"html_url":"https://github.com/mbah24-dev/Philosophers","commit_stats":null,"previous_names":["mbah24-dev/philosophers"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbah24-dev%2FPhilosophers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbah24-dev%2FPhilosophers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbah24-dev%2FPhilosophers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbah24-dev%2FPhilosophers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mbah24-dev","download_url":"https://codeload.github.com/mbah24-dev/Philosophers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246296576,"owners_count":20754635,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-30T09:17:21.190Z","updated_at":"2025-03-30T09:17:21.903Z","avatar_url":"https://github.com/mbah24-dev.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏛️ Philosophers\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/mbah24-dev/mbah24-dev/blob/main/42_badges/philosopherse.png\" alt=\"philosophers 42 project badge\"/\u003e\n\u003c/p\u003e\n\nLe projet 42 Philosophers est une implémentation du célèbre problème des philosophes en C. Il met en jeu la gestion des threads, des mutex et des sémaphores pour assurer une synchronisation correcte et éviter les deadlocks.\n\n\u003ch2\u003e🏛️ Le Problème\u003c/h2\u003e\n\u003cp\u003eCinq philosophes sont assis autour d'une table et passent leur temps à \u003cstrong\u003epenser\u003c/strong\u003e ou \u003cstrong\u003emanger\u003c/strong\u003e. Pour manger, ils doivent prendre deux fourchettes (une à gauche et une à droite). Chaque fourchette ne peut être utilisée que par un philosophe à la fois, ce qui pose des problèmes de synchronisation.\u003c/p\u003e\n\n\u003ch2\u003e🔧 Fonctionnalités\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003e✅ Gestion efficace des threads (pthread)\u003c/li\u003e\n    \u003cli\u003e✅ Synchronisation avec mutex et sémaphores\u003c/li\u003e\n    \u003cli\u003e✅ Prévention du deadlock et famine\u003c/li\u003e\n    \u003cli\u003e✅ Simulation fluide et réaliste\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e🚀 Installation\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003e# Cloner le repo\n\n\u003ch2\u003e🎮 Utilisation\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003e./philo \u0026lt;nombre_de_philosophes\u0026gt; \u0026lt;temps_pour_mourir\u0026gt; \u0026lt;temps_pour_manger\u0026gt; \u0026lt;temps_pour_penser\u0026gt; [nombre_de_repas]\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExemple :\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./philo 5 800 200 200\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eCela lance une simulation avec \u003cstrong\u003e5 philosophes\u003c/strong\u003e, un \u003cstrong\u003etemps de vie\u003c/strong\u003e de \u003cstrong\u003e800ms\u003c/strong\u003e, un \u003cstrong\u003etemps pour manger\u003c/strong\u003e de \u003cstrong\u003e200ms\u003c/strong\u003e, et un \u003cstrong\u003etemps pour penser\u003c/strong\u003e de \u003cstrong\u003e200ms\u003c/strong\u003e.\u003c/p\u003e\n\n\u003ch2\u003e📜 Règles\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003eUn philosophe meurt s'il ne mange pas à temps.\u003c/li\u003e\n    \u003cli\u003eLes fourchettes sont partagées et doivent être prises dans le bon ordre.\u003c/li\u003e\n    \u003cli\u003ePas de deadlocks autorisés.\u003c/li\u003e\n    \u003cli\u003eUne simulation correcte doit respecter ces contraintes sans comportements inattendus.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e🛠️ Technologies\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003e\u003cstrong\u003eC (pthread, mutex, sémaphores)\u003c/strong\u003e\u003c/li\u003e\n    \u003cli\u003e\u003cstrong\u003eMakefile\u003c/strong\u003e pour la compilation\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e📖 Ressources utiles\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003e\u003ca href=\"https://man7.org/linux/man-pages/man7/pthreads.7.html\"\u003ePthread documentation\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://www.geeksforgeeks.org/mutex-and-semaphores-in-c/\"\u003eMutex et sémaphores en C\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e📢 Contribuer\u003c/h2\u003e\n\u003cp\u003eLes contributions sont les bienvenues ! Pour toute amélioration, ouvrez une \u003cstrong\u003eissue\u003c/strong\u003e ou soumettez une \u003cstrong\u003epull request\u003c/strong\u003e.\u003c/p\u003e\n\n\u003ch2\u003e📜 Licence\u003c/h2\u003e\n\u003cp\u003eCe projet est sous licence \u003cstrong\u003eMIT\u003c/strong\u003e. Vous êtes libre de l'utiliser et de le modifier.\u003c/p\u003e\n\n\u003chr\u003e\n\u003cp\u003e🧠 \u003cem\u003e\"Manger pour penser, penser pour manger.\"\u003c/em\u003e 🍽️\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbah24-dev%2Fphilosophers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmbah24-dev%2Fphilosophers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbah24-dev%2Fphilosophers/lists"}