add files in semaphore practicing
add a double buffering mode IO