Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andersonhsporto/ft-philosophers
Implementação de Conceitos Básicos de Threads e Mutex. Com Base No “Problema Jantar Dos Filósofos”, Originalmente Formulado Por Edsger Dijkstra.
https://github.com/andersonhsporto/ft-philosophers
ansi-c c doubly-circular-linked-list linked-list makefile mutex philosophers philosophers-dinner-problem threads
Last synced: 3 days ago
JSON representation
Implementação de Conceitos Básicos de Threads e Mutex. Com Base No “Problema Jantar Dos Filósofos”, Originalmente Formulado Por Edsger Dijkstra.
- Host: GitHub
- URL: https://github.com/andersonhsporto/ft-philosophers
- Owner: andersonhsporto
- Created: 2022-03-17T01:26:02.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-01-27T20:35:18.000Z (almost 2 years ago)
- Last Synced: 2024-11-16T12:21:40.995Z (2 months ago)
- Topics: ansi-c, c, doubly-circular-linked-list, linked-list, makefile, mutex, philosophers, philosophers-dinner-problem, threads
- Language: C
- Homepage:
- Size: 354 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ft-philosophers
Implementação de conceitos básicos de threads e mutex.
ft-philosophers utiliza como base o "problema [Jantar dos filósofos](https://blog.pantuza.com/artigos/o-jantar-dos-filosofos-problema-de-sincronizacao-em-sistemas-operacionais)", originalmente formulado por Edsger Dijkstra.### Funções permitidas:
```
memset, printf, malloc, free, write, usleep, gettimeofday,
pthread_create, pthread_detach, pthread_join, pthread_mutex_init,
pthread_mutex_destroy, pthread_mutex_lock, pthread_mutex_unlock
```### Descriçao do problema:
> Cinco filósofos estão sentados em uma mesa redonda para jantar.
> Cada filósofo tem um prato com espaguete à sua frente.
> Cada prato possui um garfo para pegar o espaguete.
> O espaguete está muito escorregadio e, para que um filósofo consiga comer, será necessário utilizar dois garfos.
> Nesse sentido, cada filósofo alterna entre duas tarefas: comer ou pensar.
> Quando um filósofo fica com fome, ele tenta pegar os garfos à sua esquerda e à sua direita;
> um de cada vez, independente da ordem.
> Caso ele consiga pegar dois garfos, ele come durante um determinado tempo e depois recoloca os garfos na mesa.
> Em seguida ele volta a pensar.#### Argumentos:
O programa recebe os seguintes argumentos ao executar o binário ```philo```.| Argumento | Descrição |
| :-----------------:| :----------------------------------: |
| number_of_philosophers | Número de filósofos e de garfos. |
| time_to_die | O tempo (em milissegundos) desde o início da última refeição ou o início da simulação, após o qual um filósofo morrerá de fome. |
| time_to_eat | O tempo (em milissegundos) em que filósofo leva para comer. Durante esse tempo, eles precisam segurar dois garfos. |
| time_to_sleep | O tempo que um filósofo passará dormindo. |
| number_of_times_each_philosopher_must_eat | Este argumento é opcional. Se todos os filósofos comerem pelo menos "number_of_times_each_philosopher_must_eat" vezes, a simulação para. Se não for especificado, a simulação para quando um filósofo morre. |*Os argumentos são números inteiros e devem seguir a ordem desta tabela*
## Como executar:
Compile o programa através do Makefile usando o comando ```make``` na raiz do repósitorioExemplo:
```
$ ./philo 4 410 200 200
```
## Estilo de códigoO estilo de código utilizado neste projeto é o [Norminette](https://github.com/42School/norminette) criado pela escola 42.
![norminette](https://github.com/andersonhsporto/ft-philosophers/workflows/norminette/badge.svg)
## REFERÊNCIAS
[Jantar dos filosofos -](https://blog.pantuza.com/artigos/o-jantar-dos-filosofos-problema-de-sincronizacao-em-sistemas-operacionais) Problema de sincronização em Sistemas Operacionais[Code Vault: Playlist: Unix Threads in C -](https://www.youtube.com/watch?v=d9s_d28yJq0&list=PLfqABt5AS4FmuQf70psXrsMLEDQXNkLq2) Video 1 (Short introduction to threads) - Video 7 (How to pass arguments to threads in C)
[Jacob Sorber: Playlist: Programming with Threads -](https://www.youtube.com/watch?v=uA8X5zNOGw8&list=PL9IEJIKnBJjFZxuqyJ9JqVYmuFZHr7CFM) Video 1 (How to create and join threads in C) - Video 3 (Safety and Speed Issues with Threads)