wrapper for constructing, removing and handling with semaphores

Yo a este nivel haría un thin wrapper sobre semop. En vez de un waiting y un available, yo haría un sem_op que reciba un id, un semnum y un amount, que puede ser positivo o negativo. Te digo de hacerlo así porque sino esto es una API de un semáforo binario, que si bien es cómodo lo podemos implementar a nivel RAII, y eso nos permite implementar otros tipos de semáforos (como los multietapas, que aumentan de a N y disminuyen de a uno, o los greedy que aumentan de a N y un mismo proceso puede disminuir de a M < N).