Built a concurrency-safe messaging system in C featuring thread-safe channels with
blocking and non-blocking semantics. Implemented synchronization using mutexes,
condition variables, and semaphore-based wakeups. Designed a CSP-style channel
abstraction supporting multiple producers and consumers with FIFO ordering, deadlock
prevention, and deterministic selection via a select() API. Ensured safe closure
behavior, correct wakeups, and robust memory cleanup across concurrent workflows.
- Implemented blocking and non-blocking send/receive operations with mutex-protected queues
- Designed a FIFO message buffer supporting concurrent producers and consumers
- Added a semaphore-based notification system powering a scalable select() mechanism
- Ensured safe shutdown semantics that wake all blocked threads on channel close
- Built deterministic selection logic for multi-channel operations
- Implemented robust memory management and thread-safe cleanup guarantees
C
pthreads
Mutexes
Condition Variables
Concurrency
Systems Programming