Este projeto implementa um mecanismo de comunicação entre processos utilizando memória compartilhada e mutex para sincronização. Ele consiste em dois processos:
- Writer (Escritor): Modifica periodicamente o valor armazenado na memória compartilhada.
- Observer (Observador): Monitora a memória compartilhada e exibe mensagens quando uma mudança é detectada.
/
|-- CMakeLists.txt
|-- .clang-format
|-- include/
| `-- shared_object.h
|-- src/
| |-- observer.cpp
| `-- writer.cpp
|-- tests/
| `-- shared_object_test.cpp
|-- docs/
| `-- architecture.md
|-- examples/
| `-- README.md
- Compilador C++ compatível com C++11
- Biblioteca POSIX (para
shm_open,mmap,pthread) - CMake 3.30+
- Criar um diretório de build e acessar ele:
cmake -S . -B build - Compilar o projeto:
cmake --build build
Se quiser desabilitar testes:
cmake -S . -B build -DBUILD_TESTS=OFFctest --test-dir build- Primeiro, execute o observador:
./build/observer
- Em outro terminal, execute o escritor:
./build/writer
O observador detecta e imprime qualquer alteração feita pelo escritor na memória compartilhada.
- A memória compartilhada é criada usando
shm_open(). - O
mmap()é utilizado para mapear a memória no espaço do processo.
- O
pthread_mutex_té usado para evitar condições de corrida. - O escritor bloqueia o mutex ao modificar os dados.
- O observador verifica mudanças na memória compartilhada.
- Após a execução, pode ser necessário limpar a memória compartilhada manualmente:
ou
ipcrm -M <SHM_ID>
shm_unlink("/my_shared_memory");