I’ve recently started a new job that leans heavily on multithreading and while I’m aware of threads and tasks and their fundamental ideas but I don’t understand how to properly use/coordinate them in a proper multithreaded application. I’m trying to dive into the codebase but it’s a lot to absorb and all the examples I’ve seen online are just basic introductions that a few lines long and don’t really show coordination, why you would use an AutoResetEvent instead of a lock, or how to limit threads in your application.
I was hoping for book suggestions that provides detail examples of creating/using multithreaded constructs (locks, Mutexes, Semaphores) for specific use cases. These techniques should only use low level multithreading constructs. I’m aware of the TPL, but the codebase is married to these older techniques and I want to understand them on a lower level as well to appreciate modern concurrent programming. Thanks!