exploring some concurrency techniques in ada such as rendezvous, protected object and implementation of semaphores