In computer science, especially parallel computing, synchronization means the coordination of simultaneous threads or processes to complete a task in order to get correct runtime order and avoid unexpected race conditions. There are many types of synchronization: * barrier * lock/semaphore * non-blocking synchronization * synchronous communication operations advantages of synchronous communications are * no need of start and stop bits * higher data rates possible * the actual data length need not be fixed