How chitsanuphong628/os_ck works
OS_CK is a multi-client cinema-seat reservation system: clients issue LIST, STATUS, RESERVE, and CANCEL commands through a shared System V message queue, and the server returns client-specific responses. The server’s worker threads process requests against an in-memory seat table; optional mutex protection guards reservation changes, while reads are also locked. The README documents race-condition experiments, but those scripts and logs are not runtime components. The graph follows the sampled client and server code; unsampled experiment wiring is omitted.
Main entry points: server.cpp Worker dispatch · client.cpp Interactive client · common.h Message contract
Components 11
Client interface
- Interactive client
client.cpp
Message transport
- Message contract
common.h - System V queue
Server runtime
- Server startup
server.cpp - Worker dispatch
server.cpp - Queue cleanup
server.cpp
Reservation domain
- Reserve and cancel
server.cpp - Seat queries
server.cpp - Seat state
server.cpp - Table mutex
server.cpp
Other components
- Client user
Connections 15
- Client user → Interactive client: enters commands
- Interactive client → Message contract: formats requests
- Interactive client → System V queue: sends requests
- System V queue → Worker dispatch: delivers requests
- Worker dispatch → Reserve and cancel: dispatches changes
- Worker dispatch → Seat queries: dispatches queries
- Reserve and cancel → Seat state: reads and updates
- Seat queries → Seat state: reads
- Reserve and cancel → Table mutex: locks optionally
- Seat queries → Table mutex: locks reads
- Worker dispatch → System V queue: sends responses
- System V queue → Interactive client: delivers responses
- Server startup → System V queue: creates queue
- Server startup → Worker dispatch: starts workers
- Queue cleanup → System V queue: removes queue