PBD::Semaphore can really be used instead of this class now, but it didn't exist when I needed this class and it is header only, which causes some problems because windows.h is included