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 builderO executável será gerado na pasta:
./build/main.exeApó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.
