A software that consists of synchronization and mutual exclusion for multiple threads accessing one bank account using semaphores.