I recently completed a course on concurrent programming where I learned about concepts like coarse and fine grained locking, concurrent hashing, consensus, universal construction, concurrent queues, busy-waiting, thread pools, volatiles, and the happens-before relationship. Now that I have this knowledge, I'm excited but unsure about practical and fun ways to apply these principles. Any suggestions for projects that might help me explore this area further?
1 Answer
You’ve got a solid foundation in concurrency, which opens up a lot of possibilities! A great way to utilize your skills is through server applications that handle multiple clients simultaneously. Additionally, you can tackle large data processing tasks that require dividing workloads across multiple processing units. A fun project could be building a log analysis engine that can process large log files using several cores to speed things up, which would really give you a chance to put your learning into practice.
Thanks for the log analysis engine suggestion! I love the idea of mixing compiler work with concurrency—best of both worlds!