Synchronization Algorithms and Concurrent Programming