In addition to what the other guys have said.

Multithreaded programming doesn't have to be difficult if you take a RAII approach to synchronization. Most developer run into trouble when sharing data between threads, and find the synchronization of the data difficult.

Structuring the program property and using RAII makes things relatively simple.