Semaphores are synchronization tools used in concurrent programming to control access to shared resources, ensuring that multiple processes can safely access them without causing deadlocks. Their main role is to prevent deadlock by properly synchronizing access to critical resources.
Therefore, the correct answer is 1. Synchronize critical resources to prevent deadlock.