Synchronisation is the process of making something synchronous.
Synchronisation is important in all computer programs that are MultiThreaded becuase without Synchronisation the multiple threads of execution would be unable to safely communiate. An instance of unsafe communication is called a RaceCondition.
There are several schemes for Synchronisation which are known to be equalivent in terms of what you can do with them, but not necessarily their efficiency for a particular opeation.
Some modern languages (such as Java) provide for Synchronisation facilities as part of the language, but in many older languages (C/C++) they are provided using libraries of one sort or another.
6 pages link to Synchronisation: