🚦🛑 Aplicação para demonstração das primitivas de sincronização: semáforos e mutexes para garantir sincronização entre processos e evitar condições de corrida.
A execução do programa se dá pelo arquivo main.c e é feita em duas etapas da seguinte forma:
Compilação: gcc main.c -o main -lpthread
Execução: ./main
##Funcionamento O programa quando executado sem o uso de semáforos e mutexes exibe um valor inconsistente na tela, visto que são criados 100 THREADS e cada uma delas acessa a região crítica de forma não sincronizada, ocasionando em leituras de valores desatualizados e consequentemente a soma inconsistente no final do programa.
As chamadas e usos das primitivas são encontradas nos arquivos mutex.c
e sempahore.c
, basta inicializá-los globalmente e chamar sua inicialização na função main. Já as chamadas da função lock
e unlock
, devem ser colocadas no início da região compartilhada e em seu fim respectivamente.
No fim da execução do programa é impressa na tela a soma do count das threads.