Real-Time Multi-Threaded Development 

● Real-Time Audio Streaming Player
   ○ Developed a real-time application to stream and play audio wav files using C++ and WaveOut.
   ○ Used 25 C++ threads and the double buffering technique to play raw audio data from wav files.
   ○ Played small audio buffers one by one on 20 threads, while also loading the rest from the file.
   ○ Created a Monitor thread to automatically terminate and clean up other threads at the end of the program.
   ○ Communicated between threads via C++ mutexes, locks, condition variables, futures and promises.

● Multi-Threaded Maze Solver
    ○ Optimized a DFS-based maze solver by splitting it into 2 threads (Top-Down & Bottom-Up).
    ○ The 2 threads start from the opposite ends of the maze, meeting in the middle for a full solution.
    ○ Used C++ atomics for fast and efficient communication between threads.
    ○ Achieved ~2x increase in performance compared to the single-threaded solution.