The OS should be rock solid and take anything an application can throw at it (either intended or unintended).Should an application crashan OS, or cause corrupted results, then the OS is buggy. Since you are a newbie, I will assume you are not writing or supporting an OS. Therefore, let's address the issues relating to an application.
You should review the synchronization and interference avoidancefunctions provided by:
the OS
the threading toolkit (e.g. OpenMP, TBB, pthreads, Windows threads, ...)
the run-time system library
tips and tricks gleaned from web searches
inventions of your own
I suggest you begin with OpenMP. The coding samples in OpenMP cover most of the initial concepts you will need to learn about multi-threading programming.
Do this research before you attempt to tackle your application. The time spent runing through the sample programs will save you time and aggravation in conversion of your application.
In a manner similar to general coding design follows bottom-up or top-down, the parallelization effort can follow hot spots-out (bottom-up) or data/function-flow-in (top-down) methodology. The better strategy will depend on your application.
Jim Dempsey