class semaphore { public: semaphore(int count, int process = 0); // set process to 1 for virtual ~semaphore(); // semphores between processes void up(); // increase semaphore void down(); // decrease, block on 0 int trydown(); // 1-success; 0-failure (semaphore=0) private: void* sp; };