Este projeto implementa um coin flip (cara ou coroa) utilizando propositalmente uma condição de corrida (race condition) no contexto de programação multithread com OpenMP. O objetivo é demonstrar, de forma prática e visual, como a concorrência não controlada pode afetar o resultado de um programa.
Para fins didáticos, o programa executa duas threads que escrevem em uma mesma variável compartilhada sem qualquer sincronização, criando assim um cenário realista para estudo de problemas de concorrência.
Além disso, o projeto é empacotado e compilado dentro de um container Docker, utilizando docker-compose
para simplificar o build e gerar um executável compatível com Windows.
Este projeto utiliza Docker e Docker Compose para compilar o código C++ com suporte a OpenMP e gerar um executável Windows (.exe
) que pode ser executado localmente.
Antes de iniciar, verifique se você possui instalados no seu computador:
- Clonar o repositório
git clone https://github.com/Maykon-JDS/coin-flip-multi-thread.git
cd coin-flip-multi-thread
- Construir a imagem Docker e compilar
docker compose build
- Gerar o executável
docker compose run --rm builder
O executável será gerado na pasta:
./build/main.exe
Após o build, basta abrir um terminal (CMD ou PowerShell) no Windows e executar:
.\build\main.exe
💡 Como o projeto contém condição de corrida intencional, os resultados podem variar a cada execução, mostrando ora
par
, oraimpar
.
- Este projeto foi projetado para fins educacionais, simulando condições de corrida no processamento multi-thread.
- É necessário rodar o executável no Windows ou com um emulador compatível com
.exe
.
Este projeto está sob a Licença MIT. Consulte o arquivo LICENSE.md para obter mais detalhes.