Proper Multithreading: Let’s Remind Ourselves What it is

Proper Multithreading: Let’s Remind Ourselves What it is

That sounds ideal, but what does it take to have real multithreading with appropriate locks and to secure your program so it can run smoothly without you worrying if you will ever get a deadlock or a race condition?
Just some locks, semaphores, and a lot of time to think it through.