The project makes use of semaphores to implement reusable barriers to implement barrier synchronization among the threads. The project aims at sorting integers which read in from a file locally and the number of integers are in the power of 2. Each thread compare two values and swap them if the condition is true.  